请教:)
(defunC:TT( / LAY I)(vl-load-com)
(vlax-forI(vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(if (wcmatch (strCase (vla-get-Name I)) "A*,B*,C*,D*")
(progn
(setq LAY (cons (vla-get-Layer I) LAY) ) ;;;;;;;;;;;;;;LINE 1
(princ (strcat "[" (vla-get-Name I) "]\n") ) )
)
)
(setq LAY (vl-sort LAY '<) )
(vlax-forI(vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(princ (strcat "=" (vla-get-Name I) "=\n") )
)
(princ)
)
上述代码的目的是想把A、B、C、D开头的图层全部找出来,
但我只要增加了 LINE1 那句代码,其后面的所有代码均失效,能运行,但不会执行我要的操作(如PRINC之类)
(defun c:tt (/ lyrs)
(vlax-for lyr (vla-get-layers
(vla-get-activedocument (vlax-get-acad-object))
)
(if
(and (wcmatch (strcase (setq name (vla-get-name lyr))) "*")
(not (member name lyrs))
)
(setq lyrs (cons name lyrs))
)
)
(foreach x (vl-sort lyrs '<)
(princ (strcat "\nName = " x))
)
(princ)
) ivde 发表于 2015-11-25 11:31 static/image/common/back.gif
但我在 你的 IF then 后面增加一句 (princ (strcat "\nName **** " lyr))
后 其后的代码也无效了,何解?
问题在(vla-get-Layer I)这一句
查一下vla-get-Layer适用的对象是啥 iJero 发表于 2015-11-25 12:53
但我在 你的 IF then 后面增加一句 (princ (strcat "\nName **** " lyr))
后 其后的代码也无 ...
lyr是OBJECT不是string,自然不能Strcat ivde 发表于 2015-11-25 13:19 static/image/common/back.gif
lyr是OBJECT不是string,自然不能Strcat
我对lyr 加了(vla-get-Name Lyr) 问题貌似解决了,受ivide的提醒,可能是哪个LIST里混编了OBJECT 和STRING ,在仔细查看中
页:
[1]