ARGV 发表于 2022-7-6 17:07:04

静态和

你好有人知道动态块是否包含差分DXF代码,或者以任何方式区分常规块和动态块吗。谢谢

ASMI 发表于 2022-7-6 17:20:36

块的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

ARGV 发表于 2022-7-6 17:35:45

 
酷,我能应付。非常感谢。

ARGV 发表于 2022-7-6 17:45:34

 
关于动态块,你还能得到更多的信息吗?比如它的可见性或者它使用什么类型的动作?

flowerrobot 发表于 2022-7-6 18:01:07

有点离题了,但如何插入动态块,然后编辑属性,
 
例如动态polor拉伸的长度和角度?
因此,这可以成为lisp,
选择1个点,计算出角度和长度?
干杯

ASMI 发表于 2022-7-6 18:14:32

 
 
该代码可以将可见性状态从一个块复制到其他块,并尝试对其进行分析: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]
查看完整版本: 静态和