明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2503|回复: 5

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

[复制链接]
发表于 2007-12-29 14:41 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-12-29 14:50:29 编辑

图形里有一个图框,带有图号,图名等几个属性。请问用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 的这一部分不是一个明确的对象

但是我试过好多办法都没法解决。

发表于 2007-12-29 17:27 | 显示全部楼层

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

发表于 2008-1-7 11:29 | 显示全部楼层

Attr =  ThisDrawing.Blocks.GetAttributes  应该行

一般都在相应的集合里找

比如: 

文字样式在 TextStyles 里   

但是有时要注意   集合和里面元素的区别   如: DimStyles(标注样式集合) 和 DimStyle

发表于 2019-5-10 10:32 | 显示全部楼层
十几年前的帖子,我现在在学习,来回一下吧。
GetAttributes方法的对象是块参照BlockReFerence,而不是块定义blocks。
BlockReFerence的对象继承顺序是从Object到AcadObject AcadEntity再到 AcadBlockReference,它是实体,是用insertblock方法插入得到的,是实体。
blocks是块定义的集合。
发表于 2019-5-15 11:41 | 显示全部楼层
1.先采用utility.getentity方法选取对应的属性图框,再通过getattributes方法获取属性值。
2.在thisdrawing.blocks中遍历的对应的块名,可获得非图形的块定义对象,该对象的内部用item方法再次
遍历,就会得到当初的attribute定义,该定义的tagstring,textstring可以用于寻找其定义时的默认值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 04:44 , Processed in 0.217091 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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