Tunnelrat 发表于 2022-7-5 18:48:56

锁定除当前层外的所有层

你好
我搜索了一个autolisp,它可以锁定除我正在使用的当前层之外的所有层,但我找不到。
现在我必须锁定所有层,然后通过单击当前层的对象来解锁该层。
如果可以的话,请你帮我写一封。
非常感谢你。

Stefan BMR 发表于 2022-7-5 18:56:35

看一看
(defun C:LOCKALL (/ cmdecho)
(setq cmdecho (getvar 'cmdecho))
(setvar 'cmdecho 0)
(command "_.-LAYER" "_LOck" "*" "_Unlock" (getvar "CLAYER") "")
(setvar 'cmdecho cmdecho)
(princ)
)

(defun C:UNLOCKALL (/ cmdecho)
(setq cmdecho (getvar 'cmdecho))
(setvar 'cmdecho 0)
(command "_.-LAYER" "_Unlock" "*" "")
(setvar 'cmdecho cmdecho)
(princ)
)

Tunnelrat 发表于 2022-7-5 19:04:29

它工作得很好。
谢谢你,斯特凡。

David Bethel 发表于 2022-7-5 19:11:56

一些版本要求验证以锁定当前层
 
所以也许:
 

(command "_.LAYER" "_LOck" (strcat "~" (getvar "CLAYER")) "")

 
-大卫

Tunnelrat 发表于 2022-7-5 19:19:02

谢谢你,大卫,我会把这段代码放在手边以备将来使用。

iconeo 发表于 2022-7-5 19:28:46

为什么不直接使用layiso?

Tunnelrat 发表于 2022-7-5 19:34:19

因为我需要使用那里的所有层在它们上面绘制道路红线描述。

tombu 发表于 2022-7-5 19:42:18

 
这就是layiso的[锁定和淡入]设置的目的。用lisp做这件事没什么错,AutoCAD的优点是至少有三种方法可以做任何事情。

iconeo 发表于 2022-7-5 19:51:23

 
这在很多方面都是好的和坏的
 
实际上,我更喜欢layiso方法,因为淡入淡出,但我认为您也可以通过锁定层来实现这一点。
页: [1]
查看完整版本: 锁定除当前层外的所有层