有没有办法使用 AutoLisp 快速将选区设置为特定图层?

问题描述 投票:0回答:1

我正在学习 autolisp,目前使用 Bricscad。我想选择屏幕上的所有对象,然后运行 lisp 程序将所选对象设置到特定层。

这是我尝试过的代码:

(defun c:aametal (/)
    (command "._chprop" "_la" "AAMETAL" "" "")
    
    (princ "Entities Set to AAMETAL Successfully")
)

如果我复制

"._chprop" "_la" "AAMETAL" "" ""
并将其粘贴到命令行中,它会起作用,但在加载时不会运行。

autocad autolisp bricscad
1个回答
0
投票

您需要获取并将选择传递给命令 - 这可以使用

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
模式字符串这里找到更多信息。

请注意,这假设目标图层已存在于绘图中。

© www.soinside.com 2019 - 2024. All rights reserved.