是的,非常喜欢。
当动态块的参数与块定义中定义的参数发生更改时,将自动生成一个匿名块定义,其中包含反映新参数设置的几何图形——参数已更改的动态块参照将通过指向原始动态块定义的链接引用此新匿名块定义。
因此,代码还必须包括原始选择中的所有匿名块引用,然后在该选择上迭代以检索链接到所述动态块定义的引用:
- (defun c:snb ( / blk ent idx obj scl sel )
- (cond
- ( (not
- (and (setq sel (ssget "_X" '((0 . "INSERT") (2 . "`*U*,EMRG-DetailTag"))))
- (progn
- (setq idx -1)
- (while (and (null scl) (setq ent (ssname sel (setq idx (1+ idx)))))
- (setq obj (vlax-ename->vla-object ent))
- (if (or (and (vlax-property-available-p obj 'effectivename)
- (= "emrg-detailtag" (strcase (vla-get-effectivename obj) t))
- )
- (= "emrg-detailtag" (strcase (vla-get-name obj) t))
- )
- (if (vlax-property-available-p obj 'xeffectivescalefactor)
- (setq scl (vla-get-xeffectivescalefactor obj))
- (setq scl (vla-get-xscalefactor obj))
- )
- )
- )
- scl
- )
- )
- )
- (princ "\n"EMRG-DetailTag" block not found.")
- )
- ( (not (setq blk (findfile "V:\\E-Library\\Autocad\\04 ACAD Detail library\\_EMRG_DETL_NOTE.dwg")))
- (princ "\n"_EMRG_DETL_NOTE.dwg" not found.")
- )
- ( (command "_.-insert" blk "_s" scl "_r" 0.0 "\"))
- )
- (princ)
- )
- (vl-load-com) (princ)
我在“获取匿名引用”函数的编写中讨论了这一点和其他选项。
李 |