明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1359|回复: 9

求助:为何Block类型不能取得动态块属性数组

[复制链接]
发表于 2018-8-21 22:25 | 显示全部楼层 |阅读模式
新手求助,使用下述代码,能判断对象是否为动态块,为什么不能取得属性数组?
  1. Sub test()
  2. Dim objBlkDef As AcadBlock
  3. For Each objBlkDef In ThisDrawing.Blocks
  4.   If objBlkDef.IsDynamicBlock Then
  5.     If objBlkDef.Name = "2458339.445652801" Then
  6.       Dim dybProp As Variant
  7.       dybProp = objBlkDef.GetDynamicBlockProperties
  8.       For i = LBound(dybProp) To UBound(dybProp)
  9.         If dybProp(i).PropertyName = "距离" Then
  10.           dybProp(i).Value = 500#
  11.           Exit For
  12.         End If
  13.       Next i
  14.     End If
  15.   End If
  16. Next
  17. End Sub


 楼主| 发表于 2018-8-21 22:32 | 显示全部楼层
必须是AcadEntity才能取得此属性数组吗,但是用这个类型却得不到对象的正确名称,因为动态块调整过一次后会变成匿名块。各位大神请不吝赐教!
发表于 2018-8-22 06:28 | 显示全部楼层
帮老师顶个帖
发表于 2018-8-23 20:44 来自手机 | 显示全部楼层
老师搜下帖名 动态块控制核心程序  ;;---------通用函数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   )
发表于 2018-8-23 21:14 来自手机 | 显示全部楼层
这个贴 动态块问题,实在找不出来哪错了,请各位前辈抽空看下源码  与你的问题更接近
 楼主| 发表于 2018-8-25 00:02 | 显示全部楼层
对AUTOLISP没研究过,正在学习VBA二次开发,用EffectiveName取到动态块的原始名后,我的问题已解决,谢谢帮顶。
发表于 2018-8-25 18:16 来自手机 | 显示全部楼层
用blockreference不要用block
发表于 2022-7-11 19:55 | 显示全部楼层
大灰狼1976 发表于 2018-8-25 00:02
对AUTOLISP没研究过,正在学习VBA二次开发,用EffectiveName取到动态块的原始名后,我的问题已解决,谢谢帮 ...

objBlkDef.Name这个块名是动态变化的,一般是个随机的字符串,所以vba取块名并不是原始块的那个块名。如判断原始块名还是需要用EffectiveName属性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 08:22 , Processed in 0.386052 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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