BLOACH85 发表于 2022-7-6 14:53:02

lisp for auto layer的帮助

嘿,伙计们,我目前正在使用lisp创建标准层,但这里是我的两个问题。我希望它在每次绘图启动时自动envoke以创建图层。此外,如果层allready存在,我希望它覆盖它。有什么办法吗?

Lee Mac 发表于 2022-7-6 15:01:40

好的,要使它在每次绘图会话启动时运行,只需在ACADDOC中调用它。lsp文件

Lee Mac 发表于 2022-7-6 15:14:59

 
你的意思是删除该层及其上的所有内容并创建一个,还是只是更改旧层的一些属性?

BLOACH85 发表于 2022-7-6 15:22:20

很好,如果它在那里,我不想完全删除它和它上面的所有内容,只要更改属性,使所有绘图人员都使用完全统一的图层。让我问你另一个问题,我这里有一台计算机,它不会加载acad中的自定义线型。lin加载所有其他线型,但用户定义的线型不会加载。它在搜索路径上的正确位置,但我是否遗漏了什么?我整个上午都在做这件事。

Lee Mac 发表于 2022-7-6 15:29:52

我不确定您的线型问题,但对于图层,这种格式的东西可以解决这个问题:
 

(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)

 
这将更新顶部图层列表中指定的图层,这将更新颜色和线型,但可以在必要时进行修改。

Se7en 发表于 2022-7-6 15:30:35

建议:
如果层存在,entmake将返回nil,因此您需要有两个条件:
1.entmake新层
2.entmod现有层定义不正确。

Lee Mac 发表于 2022-7-6 15:43:14

 
仅仅使用“命令调用”似乎就行了

Se7en 发表于 2022-7-6 15:50:16

当然了。命令运行良好。
但是,如果你想在一眨眼之间创造出一千层左右,那么你需要一些比命令更强大的东西*眨眼*

Lee Mac 发表于 2022-7-6 15:56:22

 
呵呵好的,约翰干杯
页: [1]
查看完整版本: lisp for auto layer的帮助