lisp for auto layer的帮助
嘿,伙计们,我目前正在使用lisp创建标准层,但这里是我的两个问题。我希望它在每次绘图启动时自动envoke以创建图层。此外,如果层allready存在,我希望它覆盖它。有什么办法吗? 好的,要使它在每次绘图会话启动时运行,只需在ACADDOC中调用它。lsp文件你的意思是删除该层及其上的所有内容并创建一个,还是只是更改旧层的一些属性? 很好,如果它在那里,我不想完全删除它和它上面的所有内容,只要更改属性,使所有绘图人员都使用完全统一的图层。让我问你另一个问题,我这里有一台计算机,它不会加载acad中的自定义线型。lin加载所有其他线型,但用户定义的线型不会加载。它在搜索路径上的正确位置,但我是否遗漏了什么?我整个上午都在做这件事。 我不确定您的线型问题,但对于图层,这种格式的东西可以解决这个问题:
(defun c:layupd (/ oldcmd laylist)
(setq oldcmd (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(setq laylist '(("LAYER1" "4" "CONTINUOUS")
("LAYER2" "3" "HIDDEN")))
(foreach lay laylist
(if (not (tblsearch "LAYER" (car lay)))
(command "-layer" "m" (car lay) "C" (cadr lay) (car lay) "")
(command "-layer" "C" (cadr lay) (car lay) ""))
(if (tblsearch "LTYPE" (caddr lay))
(command "-layer" "LT" (caddr lay) (car lay) "")
(princ (strcat "\n" (caddr lay) " Linetype could not be found!"))))
(setvar "CMDECHO" oldcmd)
(princ))
(c:layupd)
这将更新顶部图层列表中指定的图层,这将更新颜色和线型,但可以在必要时进行修改。 建议:
如果层存在,entmake将返回nil,因此您需要有两个条件:
1.entmake新层
2.entmod现有层定义不正确。
仅仅使用“命令调用”似乎就行了 当然了。命令运行良好。
但是,如果你想在一眨眼之间创造出一千层左右,那么你需要一些比命令更强大的东西*眨眼*
呵呵好的,约翰干杯
页:
[1]