求助:为何Block类型不能取得动态块属性数组
新手求助,使用下述代码,能判断对象是否为动态块,为什么不能取得属性数组?Sub test()
Dim objBlkDef As AcadBlock
For Each objBlkDef In ThisDrawing.Blocks
If objBlkDef.IsDynamicBlock Then
If objBlkDef.Name = "2458339.445652801" Then
Dim dybProp As Variant
dybProp = objBlkDef.GetDynamicBlockProperties
For i = LBound(dybProp) To UBound(dybProp)
If dybProp(i).PropertyName = "距离" Then
dybProp(i).Value = 500#
Exit For
End If
Next i
End If
End If
Next
End Sub 必须是AcadEntity才能取得此属性数组吗,但是用这个类型却得不到对象的正确名称,因为动态块调整过一次后会变成匿名块。各位大神请不吝赐教! 帮老师顶个帖 老师搜下帖名 动态块控制核心程序;;---------通用函数2:获得动态块所有属性(乐筑天下CAD论坛提供)--------- (defun xyl-getdynallpropvalue (par_blkref) (setq Pros (vlax-invoke par_blkref 'GetDynamicBlockProperties)) (mapcar '(lambda (X) (cons (vlax-get X 'PropertyName) (vlax-get X 'Value)) ) Pros ) 这个贴 动态块问题,实在找不出来哪错了,请各位前辈抽空看下源码与你的问题更接近 对AUTOLISP没研究过,正在学习VBA二次开发,用EffectiveName取到动态块的原始名后,我的问题已解决,谢谢帮顶。 用blockreference不要用block 谢谢分享。 学习了
objBlkDef.Name这个块名是动态变化的,一般是个随机的字符串,所以vba取块名并不是原始块的那个块名。如判断原始块名还是需要用EffectiveName属性。
页:
[1]