OMEGA-ThundeR 发表于 2022-7-5 16:20:15

Lisp创建图层时出错

你好
 
我想制作一个“创建层”lisp,这样我就可以通过命令切换层。
 
我不希望出现任何错误,它们不会显示在非常基本的版本中。
 
(Defun C:HulplijnA ()
(command "-Layer" "make" "X-XX-AL-HULPLIJN-G" "color" "yellow" "" "")
(Command "-Layer" "set" "X-XX-AL-HULPLIJN-G" "")
(princ)
)
 
由于上面的代码在几个级别上是错误的,所以我想用if语句创建一个检查。
 
(Defun C:hulplijn ()
(if (tblsearch "LAYER" "X-XX-AL-HULPLIJN-G") ; Bestaat deze laag?
((Command "-Layer" "set" "X-XX-AL-HULPLIJN-G" "")(princ)) ; Zo ja dan doen we dit
((command "-Layer" "make" "X-XX-AL-HULPLIJN-G" "color" "yellow" "" "")) ; Zo nee dan doen we dit
)
(princ)
)
 
所以,上面的代码在两种情况下都给了我一个“命令:;错误:无函数定义:nil”错误。
 
我做错了什么来制造那个错误?

BKT 发表于 2022-7-5 16:42:40

您需要去掉额外的括号和(princ):
 
(Defun C:hulplijn ()
(if (tblsearch "LAYER" "X-XX-AL-HULPLIJN-G") ; Bestaat deze laag?
   ((Command "-Layer" "set" "X-XX-AL-HULPLIJN-G" "")(princ)) ; Zo ja dan doen we dit
   ((command "-Layer" "make" "X-XX-AL-HULPLIJN-G" "color" "yellow" "" "")) ; Zo nee dan doen we dit
)
(princ)
)

Aftertouch 发表于 2022-7-5 17:14:56

如果您只使用“make”层,它会将其设置为活动(如果它已经存在)。在这种情况下,“if”语句过于致命。

OMEGA-ThundeR 发表于 2022-7-5 17:24:31

 
谢谢,现在很有魅力。
 
 
 
也许吧,但做正确的事情看起来“更干净”,尽管有一个行为“统治所有人”。但我会添加一个警告,说明该层不存在,明确说明没有使用正确的模板(在这种情况下,一个模板不能缺少另一个模板)
如果我想改变图层的任何属性,比如颜色,那么命令(制作图层)会将其重置为命令中的首选项。
页: [1]
查看完整版本: Lisp创建图层时出错