你描述的内容很容易编码。最好在ssget过滤器上包含特定的动态块名。
所以我会这样玩:
选择块
检索动态特性
获取允许值的列表
选择“what is”
选择“what will”
更改可见性
编辑:像这样
- (defun c:repv (/ _dp ss allowed n el el2 vs vsn blk dp)
- ;;; pBe 08Jan2013 ;;;
- (defun _dp (en pn m / vis)
- (setq vis (car (vl-remove-if-not
- '(lambda (k) (eq (vla-get-PropertyName k
- )
- pn ))
- (vlax-invoke en 'GetDynamicBlockProperties))))
- (if (and vis m) (vlax-get vis 'AllowedValues) vis))
- (Setq same (lambda (f b)
- (Eq (Strcase (vla-get-effectivename f))
- (strcase b))))
- (if (and (setq ss (ssget "_:L" '((0 . "INSERT")(2 . "[color="blue"][b]BLOCKNAME[/b][/color],`*U*"))))
- (same (vlax-ename->vla-object (ssname ss 0)) [b][color="blue"]"BLOCKNAME"[/color][/b])
- (setq allowed (_dp (vlax-ename->vla-object (ssname ss 0)) "RMS_SCALE_VIS" t))
- (setq n -1)
- (not (textscr))
- (foreach itm allowed
- (print (list (setq n (1+ n)) itm)))
- (not (initget 1))
- (setq el (getint "\nChoose Visibility to find [index number]: "))
- (setq vs (nth el allowed))
- (setq el2 (getint (strcat "\nChoose Visibility for " vs " [index number]: ")))
- (setq vsn (nth el2 allowed))
- )
- (repeat (setq i (sslength ss))
- (setq blk (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
- (cond ((and
- (same blk "BLOCKNAME")
- (setq dp (_dp blk "RMS_SCALE_VIS" nil))
- (eq (vlax-get dp 'Value) vs)
- (vlax-put dp 'value vsn)
- )
- )
- )
- )
- )(princ)
- )
或者更简单的方法。
选择块
获取允许值的列表
选择要查找的Visibility属性
(sssetfirst nil sset)
然后使用属性更改可见性
除我们将使用(sssetfirst nil coll)外,几乎与上述相同
HTH公司 |