明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1389|回复: 4

块属性问题

[复制链接]
发表于 2006-7-5 10:47:00 | 显示全部楼层 |阅读模式

我把一张定义过属性的图(尚未定义成块)当作块插入进来

插进来之后属性都不见了。。

请问怎么解决?

发表于 2006-7-5 11:08:00 | 显示全部楼层

不知道

我只知道定义成块后插入没有问题

 楼主| 发表于 2006-7-5 13:27:00 | 显示全部楼层

那你怎么操作的啊?

我直接把文件读进一个database里

然后在当前的db里插入了一个块参照  你是怎么处理的呢?

发表于 2006-7-5 20:46:00 | 显示全部楼层

看看你的代码?

 楼主| 发表于 2006-7-7 08:48:00 | 显示全部楼层

public static void DwgToBlock()  //把图纸当作图块插入
  {
   Document doc = Application.DocumentManager.MdiActiveDocument;
   Editor ed = doc.Editor;
   romptResult res = ed.GetString("Give me a file to insert");
   if (res.Status != PromptStatus.OK)
    return;
   string fname = res.StringResult;
   if (!File.Exists(fname))
    fname = HostApplicationServices.Current.FindFile(fname, doc.Database, FindFileHint.Default);
   using (Database db = new Database(false, false))
   {
    //得到想插入的文档
    db.ReadDwgFile(fname, FileShare.Read, true, null);
    BlockTableRecord dwgBTR=null;
    using (Transaction t = doc.TransactionManager.StartTransaction())
    {
     [U][U]try
     {
      BlockTable dwgBT=(BlockTable)t.GetObject(db.BlockTableId,OpenMode.ForWrite,true);
    
      dwgBTR=(BlockTableRecord)t.GetObject(dwgBT["Title"],OpenMode.ForWrite,true);
     }
     catch(System.Exception ess)
     {
      ed.WriteMessage(ess.Message);
     }
     foreach(ObjectId dwgID in  dwgBTR)
     {
      Entity ent = (Entity)t.GetObject(dwgID, OpenMode.ForRead, false);
      //打开当前的对象!
      if (ent is AttributeDefinition)
      {
       //设置属性为属性索引中的属性定义
       AttributeDefinition attDef = ((AttributeDefinition)(ent));
       ed.WriteMessage(attDef.TextString);
      }
     }[/U][/U]

     //创建一个块
     ObjectId idBTR = doc.Database.Insert("test", db, false);
     BlockTable bt = (BlockTable)t.GetObject(doc.Database.BlockTableId, OpenMode.ForRead);
     BlockTableRecord btr = (BlockTableRecord)t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
     double x,y,z=0;
     romptPointResult resPoint = ed.GetPoint("输入插入点坐标(x,y)");
     if (resPoint.Status != PromptStatus.OK)
      return;
     BlockReference bref = new BlockReference(resPoint.Value, dwgBTR.Id);
     btr.AppendEntity(bref);
     t.AddNewlyCreatedDBObject(bref, true);
     t.Commit();
    }
   }
  }

加下划线的部分是想处理属性来着

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

本版积分规则

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

GMT+8, 2024-11-27 00:47 , Processed in 0.156397 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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