明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1815|回复: 2

如何将已有块加入到当前图纸中?

[复制链接]
发表于 2010-9-10 09:57:00 | 显示全部楼层 |阅读模式
大侠们好,请问如何将已有的块加入到当前的图纸中呢,我写了一些代码,是加上来了,但是我的块本来是增强属性块,可以用增强属性编辑器打开,但是插入进来之后就只能用编辑块定义打开了,请大侠们指点,多谢!
  1. ObjectId id = ObjectId.Null;
  2.             using (Database sourceDatabase = GetDatabaseFromFile("d:\\arx\\bplead_title.dwg"))
  3.             {
  4.                 id = HostApplicationServices.WorkingDatabase.Insert("BPLEAD_TITLE", sourceDatabase, true);
  5.             }
  6.              Autodesk.AutoCAD.ApplicationServices.Document doc = Application.DocumentManager.MdiActiveDocument;
  7.              Point3d point = new Point3d(bx, by, bz);
  8.              BlockReference br = null;
  9.             using (Transaction trans = doc.TransactionManager.StartTransaction())
  10.             {
  11.                 BlockTable bt = (BlockTable)trans.GetObject(doc.Database.BlockTableId, OpenMode.ForRead);
  12.                 BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
  13.                
  14.                 using (br = new BlockReference(point, id))
  15.                 {
  16.                     btr.AppendEntity(br);
  17.                     trans.AddNewlyCreatedDBObject(br, true);
  18.                 }
  19.                 trans.Commit();
  20.             }
发表于 2010-9-10 16:13:00 | 显示全部楼层
  1.         public Dictionary<AttributeDefinition, AttributeReference>
  2.             AppendAttribToBlock(BlockReference blkref, List<string> atts)
  3.         {
  4.             var blkdef = GetObject<BlockTableRecord>(blkref.BlockTableRecord);
  5.             int i = 0;
  6.             if (blkdef.HasAttributeDefinitions)
  7.             {
  8.                 var attribs =
  9.                     new Dictionary<AttributeDefinition, AttributeReference>();
  10.                 foreach (var attdef in blkdef.GetEntities<AttributeDefinition>())
  11.                 {
  12.                     if (attdef.Constant || attdef.Invisible)
  13.                         break;
  14.                     AttributeReference attref = new AttributeReference();
  15.                     attref.SetAttributeFromBlock(attdef, blkref.BlockTransform);
  16.                     if (i < atts.Count)
  17.                         attref.TextString = atts[i];
  18.                     else
  19.                         attref.TextString = attdef.TextString;
  20.                     i++;
  21.                     blkref.AttributeCollection.AppendAttribute(attref);
  22.                     Transaction.AddNewlyCreatedDBObject(attref, true);
  23.                     attribs.Add(attdef, attref);
  24.                 }
  25.                 return attribs;
  26.             }
  27.             return null;
  28.         }
复制代码
发表于 2010-11-21 16:18:00 | 显示全部楼层

先收藏,后续学习。。。

 

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 00:48 , Processed in 0.191677 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表