fircst 发表于 2007-12-29 14:41:00

怎么利用VBA从图形里读取块属性

本帖最后由 作者 于 2007-12-29 14:50:29 编辑 <br /><br /> <p>图形里有一个图框,带有图号,图名等几个属性。请问用VBA怎么才能读出来?</p><p>我自己写的代码有问题,请达人看看。谢谢</p><p>Private Sub CommandButton2_Click()</p><p>Dim Attr as Variant</p><p>For Each AcadBlockReference In ThisDrawing.Blocks</p><p>If AcadBlockReference.Name = "A2" Then</p><p>msgbox "There is Drawing border" '这一行可以正确运行,说明for each是历遍到所需要的那个AcadBlockReference对象的。</p><p>Attr =&nbsp; AcadBlockReference.GetAttributes ' 这一行提示不支持此方法...</p><p></p><p>End If</p><p>Next</p><p>End Sub</p><p></p><p>我觉得错误是因为Attr =&nbsp; <font color="#f70909">AcadBlockReference</font>.GetAttributes 的这一部分不是一个明确的对象</p><p>但是我试过好多办法都没法解决。</p>

雪山飞狐_lzh 发表于 2007-12-29 17:27:00

<p>你把块定义和块参照弄混了,ThisDrawing.Blocks是块定义集合,要找块参照到模型空间或图纸空间找</p>

kickmaster 发表于 2008-1-7 11:29:00

<p>Attr =&nbsp; ThisDrawing.Blocks.GetAttributes&nbsp; 应该行</p><p>一般都在相应的集合里找</p><p>比如:&nbsp; </p><p>文字样式在 TextStyles 里&nbsp;&nbsp;&nbsp; </p><p>但是有时要注意&nbsp;&nbsp; 集合和里面元素的区别&nbsp;&nbsp; 如: <font color="#f70968">DimStyles(标注样式集合) 和 DimStyle</font>
        </p><p></p>

wangjianyin 发表于 2019-4-27 22:20:27

学习

落叶交给了风 发表于 2019-5-10 10:32:51

十几年前的帖子,我现在在学习,来回一下吧。
GetAttributes方法的对象是块参照BlockReFerence,而不是块定义blocks。
BlockReFerence的对象继承顺序是从Object到AcadObject AcadEntity再到 AcadBlockReference,它是实体,是用insertblock方法插入得到的,是实体。
blocks是块定义的集合。

renhaitao_nice 发表于 2019-5-15 11:41:36

1.先采用utility.getentity方法选取对应的属性图框,再通过getattributes方法获取属性值。
2.在thisdrawing.blocks中遍历的对应的块名,可获得非图形的块定义对象,该对象的内部用item方法再次
遍历,就会得到当初的attribute定义,该定义的tagstring,textstring可以用于寻找其定义时的默认值。
页: [1]
查看完整版本: 怎么利用VBA从图形里读取块属性