davehuhudave 发表于 2010-8-24 09:20:00

关于块参照的属性

有没有办法快速得到某块参照的某属性tag为a的值或者设置值??我现在是遍览属性定义,这样太慢

davehuhudave 发表于 2010-8-24 09:29:00

另外还有一个问题一起问吧:<font face="Verdana">Extents3d</font>所有实体<font face="Verdana">AddExtent后,即使我的实体全部在第一象限,但是总是minpoiint是0,0,0,如何正确取范围啊?</font>

雪山飞狐_lzh 发表于 2010-8-24 10:35:00

第二个问题,我这里是正常的,你的Cad版本?


      
      public static void test25()
      {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            Database db = doc.Database;
            using (var tr = db.TransactionManager.StartTransaction())
            {
                Extents3d ext = new Extents3d();
                var btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
                foreach (ObjectId id in btr)
                {
                  var ent = tr.GetObject(id, OpenMode.ForRead) as Entity;
                  if (ent != null)
                  {
                        ext.AddExtents(ent.GeometricExtents);
                  }
                }
                ed.WriteMessage("\nExtents:{0}", ext);
            }
      }


命令: 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))

雪山飞狐_lzh 发表于 2010-8-24 10:37:00

<p>第一个看不懂了</p>
<p><font face="Verdana">AttributeReference</font>是有Tag属性的</p>

davehuhudave 发表于 2010-8-24 10:39:00

第一个问题:一个块参照可以有<font face="Verdana">AttributeCollection</font>,即有很多<font face="Verdana">AttributeReference,如何快速得到tag为a的那个,</font>

davehuhudave 发表于 2010-8-24 10:45:00

<p>第二个代码:</p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim ext As New Extents3d</font></p>
<p><font face="Verdana">Dim ed As Editor = AcadApp.DocumentManager.MdiActiveDocument.Editor<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim db As Database = AcadApp.DocumentManager.MdiActiveDocument.Database<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Using trans As Transaction = db.TransactionManager.StartTransaction()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim btr As BlockTableRecord = trans.GetObject(db.CurrentSpaceId, OpenMode.ForRead)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For Each id As ObjectId In btr<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim ent As Entity = trans.GetObject(id, OpenMode.ForRead, False)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Not ent Is Nothing Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ext.AddExtents(ent.GeometricExtents)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Using</font></p>

davehuhudave 发表于 2010-8-24 10:48:00

上面代码调试发现,new的时候minpoiint就是0,0了,那新加的第一象限估计也不可能改变她了

雪山飞狐_lzh 发表于 2010-8-24 10:51:00

<p>你的Cad版本?</p>
<p>如果确定不行</p>
<p>可以先获取第一个的范围,再依次加入其余的</p>

davehuhudave 发表于 2010-8-24 10:53:00

2007

davehuhudave 发表于 2010-8-24 10:59:00

版主关于第二个问题的extend获取方法很好,谢谢,第一个问题版主再帮我看看啥
页: [1] 2
查看完整版本: 关于块参照的属性