该代码可以将可见性状态从一个块复制到其他块,并尝试对其进行分析:http://www.asmitools.com/Files/Lisps/Vico.html
有两个函数用于获取和放置动态属性:
- (vl-load-com)
- (defun GetDynamicProperty(Block Property / oVal)
- (if(= 'ENAME(type Block))
- (setq Block(vlax-ename->vla-object Block))
- ); end if
- (if(= :vlax-true(vla-get-IsDynamicBlock Block))
- (foreach p(vlax-safearray->list
- (vlax-variant-value
- (vla-GetDynamicBlockProperties Block)))
- (if(=(strcase Property)(strcase(vla-get-PropertyName p)))
- (if(vl-catch-all-error-p
- (setq oVal(vl-catch-all-apply
- 'vla-get-Value(list p))))
- nil
- (setq oVal(vlax-variant-value oVal))
- ); end if
- ); end if
- ); end foreach
- ); end if
- oVal
- ); end of GetDynamicProperty
- (defun PutDynamicProperty(Block Property Value / oVal cVal)
- (if(= 'ENAME(type Block))
- (setq Block(vlax-ename->vla-object Block))
- ); end if
- (if(= :vlax-true(vla-get-IsDynamicBlock Block))
- (foreach p(vlax-safearray->list
- (vlax-variant-value
- (vla-GetDynamicBlockProperties Block)))
- (if(=(strcase Property)(strcase(vla-get-PropertyName p)))
- (progn
- (setq cVal(vlax-make-variant Value vlax-vbDouble))
- (if(vl-catch-all-error-p
- (vl-catch-all-apply
- 'vla-put-Value(list p cVal)))
- (setq oVal nil)(setq oVal Value)
- ); end if
- ); end progn
- ); end if
- ); end foreach
- ); end if
- oVal
- ); end of GetDynamicProperty
具有标准“距离”特性的动态块测试:
获取块名称:
- (setq bl(car(entsel)))
- Select object: <Entity name: 7efa3390>
获取属性“距离”:
- Command: (GetDynamicProperty bl "Distance")
- 667.536
使用新的“距离”值调整块大小:
- Command: (PutDynamicProperty bl "Distance" 100.0)
- 100.0
对不起,伙计们。这不是简短的对话,我今天没有更多的时间。 |