选择相似的可见性统计
我找到了根据匹配的可见性状态选择块的附加代码。我对其进行了轻微修改,因此它始终假设可见性参数称为默认的“Visibility1”第一个主命令VSDB要求选择一个块,但它仍然需要命令行输入所需的可见性状态(变量“visstat”)。我想让它读取所选块的。
以下命令TDB将返回块可见性状态的名称
我的问题是如何将它们组合在一起,只需键入vsdb并选择块,然后完成-选择所有具有匹配可见性状态名称的块。
可见性选择。lsp (defun c:demo (/ LM:getvisibilityparametername _curvis curvis e en ess ssvis)
;; Get Visibility Parameter Name-Lee Mac
;; Returns the name of the Visibility Parameter of a Dynamic Block (if present)
;; blk - VLA Dynamic Block Reference object
;; Returns: Name of Visibility Parameter, else nil
(defun LM:getvisibilityparametername (blk / vis)
(if
(and
(vlax-property-available-p blk 'effectivename)
(setq blk
(vla-item
(vla-get-blocks (vla-get-document blk))
(vla-get-effectivename blk)
)
)
(= :vlax-true (vla-get-isdynamicblock blk))
(= :vlax-true (vla-get-hasextensiondictionary blk))
(setq vis
(vl-some
'(lambda (pair)
(if
(and
(= 360 (car pair))
(= "BLOCKVISIBILITYPARAMETER"
(cdr (assoc 0 (entget (cdr pair))))
)
)
(cdr pair)
)
)
(dictsearch
(vlax-vla-object->ename (vla-getextensiondictionary blk))
"ACAD_ENHANCEDBLOCK"
)
)
)
)
(cdr (assoc 301 (entget vis)))
)
)
(defun _curvis (_e _vn)
(vlax-get
(vl-some '(lambda (l)
(if (eq _vn (vla-get-propertyname l))
l
)
)
(vlax-invoke _e 'GetDynamicBlockProperties)
)
'Value
)
)
(if
(and (setq e (ssget "_:S:E" '((0 . "INSERT"))))
(setq
en (vla-item (vla-get-blocks
(vla-get-ActiveDocument (vlax-get-acad-object))
)
(setq effname
(vla-get-EffectiveName
(setq e (vlax-ename->vla-object (ssname e 0)))
)
)
)
)
(minusp (vlax-get en 'IsDynamicBlock))
(setq visname (LM:getvisibilityparametername e))
(setq curvis (_curvis e visname))
(setq ssvis (ssadd)
ssx (ssget "X" (list (cons 2 (strcat effname ",`*U*"))))
)
)
(repeat (setq i (sslength ssx))
(if (and (eq (vla-get-EffectiveName
(setq es (vlax-ename->vla-object
(setq ess (ssname ssx (setq i (1- i))))
)
)
)
effname
)
(eq (_curvis es visname) curvis)
)
(ssadd ess ssvis)
)
)
)
(if curvis
(sssetfirst nil ssvis)
)
(princ)
)
感谢LM提供-->getvisibilityparametername
HTH公司 太棒了-这就是生意!非常感谢
干杯pBe! 你介意上传你最后的Lisp程序吗?这正是我要找的,但我不擅长lisp创建。
页:
[1]