图层选择
是否有更清洁/更快的方法来实现这一点;(defun JHSETCOL1 ( /)
(if (not JHCOL1)
(setq JHCOL1 "7")
)
(command "-layer" "C" JHCOL1 "*inv*" "")
(command "-layer" "C" JHCOL1 "*dim*" "")
(command "-layer" "C" JHCOL1 "*alias*" "")
(princ)
)
本质上,我想使用通配符更改选定层的颜色。我有一个DCL框,您可以输入颜色“JHCOL1”
对使用通配符的lisp的层选择方面更感兴趣。。。 您可以通过使用逗号分隔模式来匹配多个通配符模式,例如:
(defun jhsetcol1 ( col )
(if (null col) (setq col 7))
(command "_.-layer" "_c" col "*inv*,*dim*,*alias*" "")
(princ)
)
或者,使用Vanilla AutoLISP而不使用-LAYER命令:
(defun jhsetcol2 ( col / def dxf enx lay )
(if (null col) (setq col 7))
(while (setq lay (tblnext "layer" (null lay)))
(if (wcmatch (setq lay (cdr (assoc 2 lay))) "*inv*,*dim*,*alias*")
(progn
(setq enx (entget (tblobjname "layer" lay))
dxf (assoc 62 enx)
)
(entmod (subst (cons 62 (if (minusp (cdr dxf)) (- col) col)) dxf enx))
)
)
)
(princ)
)
(jhsetcol2 3)或者,使用Visual LISP:
5
请注意,在上述示例中使用wcmatch区分大小写。 哇,李,这是你想要的最深入的!
完美的
我认为我非常需要扩展我的代码知识库! 不客气,和尚询问您是否对代码有任何问题 我还没消化呢,快去看看!
我得给你买杯啤酒! 尝试了你的Visual lisp方法,我现在需要学习Visual lisp!看起来不错!
Visual LISP路径可能更简洁,但Vanilla AutoLISP方法将更快-我还建议修改我在上面发布的示例VL代码,以接受VLA文档对象作为参数,这样就不需要多次调用函数来重复检索该对象和应用程序对象。
在你周末回复后,我开始在afralisp上查找VL,这开始有意义,但当我有时间离开日常工作时,我需要深入研究!
页:
[1]