已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CAD开发实验(四)实验三 AutoCAD图形块的创建与应用一、主要内容1、创建块定义及插入块参照2、创建带有属性的块定义及插入带有属性的块参照3、在对话框中查看块定义的图标4、在当前文件中插入外部文件中的块5、在当前文件中插入其他DWG文件二、学时安排:2学时三、预习内容理解块的含义,回顾块和带属性块的定义四、AutoCAD图形块的创建与应用4.1创建块定义及插入块参照4.1.1 创建块定义 代码:/创建块 public Document pDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; CommandMethod(CreateBlock) public void CreateBlock() Database acCurDb = pDoc.Database; using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction() BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForWrite) as BlockTable; / 创建新的块表记录 BlockTableRecord acBlkTblRec = new BlockTableRecord(); string blkname = 三角点; acBlkTblRec.Name = blkname; acBlkTblRec.Origin = new Point3d(0, 0, 0); Point3d pCenter = new Point3d(0, 0, 0); /创建中心点 DBPoint pDBPt = new DBPoint(pCenter); /创建圆 Circle pCir = new Circle(pCenter, new Vector3d(0, 0, 1), 0.25); /创建三角形 Polyline pTri = new Polyline(4); pTri.AddVertexAt(0, new Point2d(0, 1), 0, 0, 0); pTri.AddVertexAt(1, new Point2d(0.866, -0.5), 0, 0, 0); pTri.AddVertexAt(2, new Point2d(-0.866, -0.5), 0, 0, 0); pTri.AddVertexAt(3, new Point2d(0, 1), 0, 0, 0); /给定块的原点 acBlkTblRec.Origin = new Point3d(0, 0, 0); /将图形实体添加到块表记录 acBlkTblRec.AppendEntity(pDBPt); acBlkTblRec.AppendEntity(pCir); acBlkTblRec.AppendEntity(pTri); /将块记录添加到块表 acBlkTbl.Add(acBlkTblRec); acTrans.AddNewlyCreatedDBObject(acBlkTblRec, true); / 提交修改并销毁事务 acTrans.Commit(); 4.1.2插入卡块参照代码: /插入块 CommandMethod(InsertBlock) public void InsertBlock() Database acCurDb = pDoc.Database; / 启动一个事务 Start a transaction using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction() BlockTable acBlkTbl = acTrans.GetObject( acCurDb.BlockTableId, OpenMode.ForWrite) as BlockTable; / 以写方式打开模型空间块表记录 BlockTableRecord acBlkTblRec = acTrans.GetObject( acBlkTblBlockTableRecord.ModelSpace, OpenMode.ForWrite) as BlockTableRecord; /获取三角点块,并创建块引用 BlockTableRecord pBlockTableRecord = acTrans.GetObject( acBlkTbl三角点, OpenMode.ForRead) as BlockTableRecord; BlockReference bref = new BlockReference( new Point3d(10, 10, 0), pBlockTableRecord.ObjectId); BlockReference bref2 = new BlockReference( new Point3d(30, 30, 0), pBlockTableRecord.ObjectId); acBlkTblRec.AppendEntity(bref2); acTrans.AddNewlyCreatedDBObject(bref2, true); acTrans.Commit(); 4.2创建带有属性的块定义及插入带有属性的块参照4.2.1 创建带有属性的块定义创建一个名为“三角点”的带属性块的记录,包括以下实体: 一个点 一个圆 一个三角形 一个名为三角点的属性代码: #region 创建带属性的块 CommandMethod(CreateAtrrBlock) public void CreateAtrrBlock() Database acCurDb = pDoc.Database; using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction() BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForWrite) as BlockTable; BlockTableRecord acBlkTblRec = new BlockTableRecord(); string blkname = 三角点; acBlkTblRec.Name = blkname; acBlkTblRec.Origin = new Point3d(0, 0, 0); Point3d pCenter = new Point3d(0, 0, 0); /创建中心点 DBPoint pDBPt = new DBPoint(pCenter); /创建圆 Circle pCir = new Circle(pCenter, new Vector3d(0, 0, 1), 0.25); /创建三角形 Polyline pTri = new Polyline(4); pTri.AddVertexAt(0, new Point2d(0, 1), 0, 0, 0); pTri.AddVertexAt(1, new Point2d(0.866, -0.5), 0, 0, 0); pTri.AddVertexAt(2, new Point2d(-0.866, -0.5), 0, 0, 0); pTri.AddVertexAt(3, new Point2d(0, 1), 0, 0, 0); Polyline pPl = new Polyline(2); pPl.AddVertexAt(0, new Point2d(0.9, 0), 0, 0, 0); pPl.AddVertexAt(1, new Point2d(4.5, 0), 0, 0, 0); /定义属性 Point3d pPosition = new Point3d(1, 0.2, 0); AttributeDefinition pAtrDef = new AttributeDefinition( pPosition, 洼地, 三角点名, 输入三角点名, acCurDb.Textstyle); pAtrDef.Height = 1; Point3d pPosition2 = new Point3d(1, -1.2, 0); AttributeDefinition pHVaue = new AttributeDefinition( pPosition2, 0.00, 高程值, 输入高程值, acCurDb.Textstyle); pHVaue.Height = 1; /给定块的原点 acBlkTblRec.Origin = new Point3d(0, 0, 0); /将图形实体添加到块表记录 acBlkTblRec.AppendEntity(pDBPt); acBlkTblRec.AppendEntity(pCir); acBlkTblRec.AppendEntity(pTri); acBlkTblRec.AppendEntity(pPl); acBlkTblRec.AppendEntity(pAtrDef); acBlkTblRec.AppendEntity(pHVaue); /将块记录添加到块表 acBlkTbl.Add(acBlkTblRec); acTrans.AddNewlyCreatedDBObject(acBlkTblRec, true); CreateBlockIcon cbi = new CreateBlockIcon(acBlkTblRec.Name); acTrans.Commit(); #endregion4.2.2 插入带有属性的块参照代码: #region 插入带属性的块 CommandMethod(InsertAtrrBlock) public void InsertAtrrBlock() Database acCurDb = pDoc.Database; using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction() BlockTable acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord acBlkTblRec = acTrans.GetObject(acBlkTblBlockTableRecord.ModelSpace, OpenMode.ForWrite) as BlockTableRecord; BlockTableRecord pBlockTableRecord = acTrans.GetObject( acBlkTbl三角点, OpenMode.ForRead) as BlockTableRecord; BlockReference bref = new BlockReference( new Point3d(10, 10, 0), pBlockTableRecord.ObjectId); acBlkTblRec.AppendEntity(bref); acTrans.AddNewlyCreatedDBObject(bref, true); foreach (ObjectId id in pBlockTableRecord) Entity ent = (Entity)acTrans.GetObject(id, OpenMode.ForRead, false); /打开当前的对象! if (ent is AttributeDefinition) AttributeReference attRef = new AttributeReference(); AttributeDefinition attDef = (AttributeDefinition)ent; attRef.SetPropertiesFrom(attDef); attRef.Height = attDef.Height; attRef.Rotation = attDef.Rotation; attRef.Tag = attDef.Tag; if (attDef.Tag = 三角点名) attRef.Position = new Point3d(11.3, 10.3, 0); attRef.TextString = 洼地; else if (attDef.Tag = 高程值) attRef.Position = new Point3d(11, 8.8, 0); attRef.TextString = 65.99; if (!bref.IsWriteEnabled) bref.UpgradeOpen(); bref.AttributeCollecti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高铁配餐肉制品企业制定与实施新质生产力战略分析报告
- 新形势下籼米细粉行业顺势崛起战略制定与实施分析研究报告
- 仓库消防沙箱2025年合同
- 2025年遵义市习水县中央特岗计划教师招聘考试试卷真题
- 2003年浙江省金华市中考数学试卷【含答案】
- 电力电子技术与新能源应用手册
- 家长会心得体会14篇
- 幼师培训心得体会(汇编15篇)
- 2026年中考数学真题完全解读(广东省深圳卷)
- 2026船舶法务面试题目及答案
- 幼教中心电路改造合同
- 2024高考数学九省联考数学试题(解析版)
- DZ∕T 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼(正式版)
- SJ-T 11795-2022 锂离子电池电极材料中磁性异物含量测试方法
- 中建通风空调专项施工方案
- DB4206-T 60-2023 实验室气瓶安全管理规范
- 预算法ppt课件(精品文档)
- 住院医师规范化培训住院病历书写指导教学指南(2021年版)
- 中药配伍禁忌
- 胸腔镜下肺癌根治的手术配合
- 万象天地详情
评论
0/150
提交评论