静态和
你好有人知道动态块是否包含差分DXF代码,或者以任何方式区分常规块和动态块吗。谢谢 块的ActiveX对象具有IsDynamicBlock属性。Command: (vl-load-com)
Command: (setq vlaBl(vlax-ename->vla-object(car(entsel))))
Select object: #<VLA-OBJECT IAcadBlockReference 0e83853c>
Command: (vla-get-IsDynamicBlock vlaBl)
:vlax-true
酷,我能应付。非常感谢。
关于动态块,你还能得到更多的信息吗?比如它的可见性或者它使用什么类型的动作? 有点离题了,但如何插入动态块,然后编辑属性,
例如动态polor拉伸的长度和角度?
因此,这可以成为lisp,
选择1个点,计算出角度和长度?
干杯
该代码可以将可见性状态从一个块复制到其他块,并尝试对其进行分析: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
对不起,伙计们。这不是简短的对话,我今天没有更多的时间。
页:
[1]