我不确定我是否完全理解您的问题,但在我看来,您的代码在逻辑上是错误的(如果函数中的AcadBlock参数不是ModelSpace或PaperSpace):1。块定义的范围不一定与块引用相同。例如,块定义可以有几个具有很短标记字符串的属性定义,而相应的属性引用可以有很长的值字符串,甚至块引用也可以有没有匹配属性定义的属性引用,或者根本没有属性引用。这很可能会使块参照的范围与块定义不同。此外,您需要考虑到块参照可以缩放/旋转,这也会导致与块定义不同的范围;s、 没有API可用于访问块定义中的动态设计,因此您的代码注释<;=这个条件语句需要工作&引用;不可行
如果您的目标是了解动态块参照的所有可能范围,那么这相当简单:获取块参照中可用的动态特性名称列表(请记住,其他动态特性而非可见性也可能导致不同的范围)
一个接一个地遍历属性并设置它,然后获得块参照的范围
当然,如果多个动态特性的组合可能会导致不同程度的结果,那么事情就相当复杂,这将由您来发现
在简单的情况下(假设您只有一个属性/可见性和一系列值),然后可以执行此操作(伪代码):
Dim originalVal as Object
Dim propVals()as ObjectDim i as Integer
Dim j as IntegerDim prop as AcadDynamicBlockReferenceProperty
Dim props as Variant
获取属性/可见性的值列表。GetDynamicBlockProperties()
用于i=0到Ubound(props)
 ;道具=道具 ;如果是道具。PropertyName=[目标属性],然后   ;对于j=0到Ubound(属性允许值)     ;Redim Preserve propVals(j)     ;属性(j)=属性。允许值(j)   ;下一步   ;退出 ;结束If下一步
//循环通过属性/可见性状态作为对象的暗状态
,对于i=0到Ubound(propVals)
 ;设置状态=属性(i) '' 获取块参考#039;s属性/价值可见性 
 '' 获取块参考';s区段在此状态下下