我正在学习 autolisp,目前使用 Bricscad。我想选择屏幕上的所有对象,然后运行 lisp 程序将所选对象设置到特定层。
这是我尝试过的代码:
(defun c:aametal (/)
(command "._chprop" "_la" "AAMETAL" "" "")
(princ "Entities Set to AAMETAL Successfully")
)
如果我复制
"._chprop" "_la" "AAMETAL" "" ""
并将其粘贴到命令行中,它会起作用,但在加载时不会运行。
您需要获取并将选择传递给命令 - 这可以使用
ssget
函数来实现,例如:
(defun c:aametal ( / sel )
(if (setq sel (ssget "_:L"))
(progn
(command "_.chprop" sel "" "_la" "AAMETAL" "")
(princ "Entities Set to AAMETAL Successfully")
)
(princ "\nNo objects found.")
)
(princ)
)
这里我使用
"_:L"
模式字符串来排除锁定图层上的对象 - 您可以在ssget
模式字符串这里找到更多信息。
请注意,这假设目标图层已存在于绘图中。