怎么利用VBA从图形里读取块属性
图形里有一个图框,带有图号,图名等几个属性。请问用VBA怎么才能读出来?我自己写的代码有问题,请达人看看。谢谢
Private Sub CommandButton2_Click()
Dim Attr as Variant
For Each AcadBlockReference In ThisDrawing.Blocks
If AcadBlockReference.Name = "A2" Then
msgbox "There is Drawing border" '这一行可以正确运行,说明for each是历遍到所需要的那个AcadBlockReference对象的。
Attr =AcadBlockReference.GetAttributes ' 这一行提示不支持此方法...
End If
Next
End Sub
我觉得错误是因为Attr =AcadBlockReference.GetAttributes 的这一部分不是一个明确的对象
但是我试过好多办法都没法解决。
你把块定义和块参照弄混了,ThisDrawing.Blocks是块定义集合,要找块参照到模型空间或图纸空间找
Attr =ThisDrawing.Blocks.GetAttributes应该行
一般都在相应的集合里找
比如:
文字样式在 TextStyles 里
但是有时要注意 集合和里面元素的区别 如: DimStyles(标注样式集合) 和 DimStyle
学习 十几年前的帖子,我现在在学习,来回一下吧。
GetAttributes方法的对象是块参照BlockReFerence,而不是块定义blocks。
BlockReFerence的对象继承顺序是从Object到AcadObject AcadEntity再到 AcadBlockReference,它是实体,是用insertblock方法插入得到的,是实体。
blocks是块定义的集合。
1.先采用utility.getentity方法选取对应的属性图框,再通过getattributes方法获取属性值。
2.在thisdrawing.blocks中遍历的对应的块名,可获得非图形的块定义对象,该对象的内部用item方法再次
遍历,就会得到当初的attribute定义,该定义的tagstring,textstring可以用于寻找其定义时的默认值。
页:
[1]