1 using System; 2 3 using Autodesk.AutoCAD.DatabaseServices; 4 using Autodesk.AutoCAD.Geometry; 5 using Autodesk.AutoCAD.Runtime; 6 7 [assembly: CommandClass(typeof(Sample.AddBlock))] 8 namespace Sample 9 { 10 class AddBlock 11 { 12 /// <summary> 13 /// 引用外部文件为块参照插入 14 /// </summary> 15 [CommandMethod("AddRefBlock")] 16 public void Add1() 17 { 18 Database db = HostApplicationServices.WorkingDatabase; 19 using (Transaction trans = db.TransactionManager.StartTransaction()) 20 { 21 BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; 22 BlockTableRecord btr = trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; 23 ObjectId refid = db.OverlayXref(@"c:\drwing.dwg", "name");// 通过外部文件获取图块定义的ObjectId 24 BlockReference br = new BlockReference(Point3d.Origin, refid); // 通过块定义添加块参照 25 btr.AppendEntity(br); //把块参照添加到块表记录 26 trans.AddNewlyCreatedDBObject(br, true); // 通过事务添加块参照到数据库 27 trans.Commit(); 28 } 29 } 30 31 /// <summary> 32 /// 把块定义变为块参照插入 33 /// </summary> 34 [CommandMethod("AddBlock")] 35 public void Add2() 36 { 37 Database db = HostApplicationServices.WorkingDatabase; 38 ObjectId blkid; 39 40 //创建块定义 41 using (Transaction trans = db.TransactionManager.StartTransaction()) 42 { 43 BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable; 44 BlockTableRecord blk = new BlockTableRecord(); 45 blk.Name = "BLK"; 46 Line L = new Line(Point3d.Origin, new Point3d(1000, 1000, 0)); 47 Circle C = new Circle(Point3d.Origin, Vector3d.ZAxis, 500); 48 blk.AppendEntity(L); 49 blk.AppendEntity(C); 50 blkid = bt.Add(blk); 51 trans.AddNewlyCreatedDBObject(blk, true); 52 trans.Commit(); 53 } 54 55 using (Transaction tr = db.TransactionManager.StartTransaction()) 56 { 57 BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; 58 BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; 59 BlockReference br = new BlockReference(new Point3d(0,0, 0), blkid); // 通过块定义创建块参照 60 btr.AppendEntity(br); //把块参照添加到块表记录 61 tr.AddNewlyCreatedDBObject(br, true); // 通过事务添加块参照到数据库 62 tr.Commit(); 63 } 64 } 65 } 66 } 67 --------------------- 68 作者:whuruby 69 来源:CSDN 70 原文:https://blog.csdn.net/liupeng_qwert/article/details/45557195 71 版权声明:本文为博主原创文章,转载请附上博文链接!
浙公网安备 33010602011771号