明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3488|回复: 12

关于块参照的属性

  [复制链接]
发表于 2010-8-24 09:20:00 | 显示全部楼层 |阅读模式
有没有办法快速得到某块参照的某属性tag为a的值或者设置值??我现在是遍览属性定义,这样太慢
 楼主| 发表于 2010-8-24 09:29:00 | 显示全部楼层
另外还有一个问题一起问吧:Extents3d所有实体AddExtent后,即使我的实体全部在第一象限,但是总是minpoiint是0,0,0,如何正确取范围啊?
发表于 2010-8-24 10:35:00 | 显示全部楼层
第二个问题,我这里是正常的,你的Cad版本?
  1.         [CommandMethod("tt5")]
  2.         public static void test25()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Editor ed = doc.Editor;
  6.             Database db = doc.Database;
  7.             using (var tr = db.TransactionManager.StartTransaction())
  8.             {
  9.                 Extents3d ext = new Extents3d();
  10.                 var btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
  11.                 foreach (ObjectId id in btr)
  12.                 {
  13.                     var ent = tr.GetObject(id, OpenMode.ForRead) as Entity;
  14.                     if (ent != null)
  15.                     {
  16.                         ext.AddExtents(ent.GeometricExtents);
  17.                     }
  18.                 }
  19.                 ed.WriteMessage("\nExtents:{0}", ext);
  20.             }
  21.         }

命令: tt5
Extents(1E+20,1E+20,1E+20),(-1E+20,-1E+20,-1E+20))
命令: l LINE 指定第一点:
指定下一点或 [放弃(U)]:
指定下一点或 [放弃(U)]:
命令:  LINE 指定第一点:
指定下一点或 [放弃(U)]:
指定下一点或 [放弃(U)]:
命令: tt5
Extents(621.135244985941,418.306146554517,0),(1597.42082141753,1073.70278557906,0))
发表于 2010-8-24 10:37:00 | 显示全部楼层

第一个看不懂了

AttributeReference是有Tag属性的

 楼主| 发表于 2010-8-24 10:39:00 | 显示全部楼层
第一个问题:一个块参照可以有AttributeCollection,即有很多AttributeReference,如何快速得到tag为a的那个,
 楼主| 发表于 2010-8-24 10:45:00 | 显示全部楼层

第二个代码:

        Dim ext As New Extents3d

Dim ed As Editor = AcadApp.DocumentManager.MdiActiveDocument.Editor
        Dim db As Database = AcadApp.DocumentManager.MdiActiveDocument.Database
        Using trans As Transaction = db.TransactionManager.StartTransaction()
            Dim btr As BlockTableRecord = trans.GetObject(db.CurrentSpaceId, OpenMode.ForRead)
            For Each id As ObjectId In btr
                Dim ent As Entity = trans.GetObject(id, OpenMode.ForRead, False)
                If Not ent Is Nothing Then
                    ext.AddExtents(ent.GeometricExtents)
                End If
            Next
        End Using

 楼主| 发表于 2010-8-24 10:48:00 | 显示全部楼层
上面代码调试发现,new的时候minpoiint就是0,0了,那新加的第一象限估计也不可能改变她了
发表于 2010-8-24 10:51:00 | 显示全部楼层

你的Cad版本?

如果确定不行

可以先获取第一个的范围,再依次加入其余的

 楼主| 发表于 2010-8-24 10:53:00 | 显示全部楼层
2007
 楼主| 发表于 2010-8-24 10:59:00 | 显示全部楼层
版主关于第二个问题的extend获取方法很好,谢谢,第一个问题版主再帮我看看啥
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 01:52 , Processed in 0.182216 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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