tnvsb 发表于 2022-7-5 13:16:03

lisp中的修改。切换

我有一个lisp代码,可以一次打开一个图层,其余图层将处于关闭状态。
(定义c:NL()
(if(=lay nil)(setq num 0))
(setq entlay(tblnext“layer”num))
(setq lay(cdr(assoc 2 entlay)))
(命令“layer”s“lay”off“*”“”)
(setq num nil)
 
但我需要修改如下
lisp应该询问哪些层在可见状态下持续打开,哪些层切换其可见性。
假设我们有如下cad层:
拱形墙
Archi窗口
Archi地板
选择灯光
选择电缆
选择设备。
lisp应询问2个用户输入查询,如下所示:
1、请给出不可切换的图层:
2、请给出要切换的图层:
如果我给用户输入“Arch”作为第一个查询的字符串,那么所有的Archi-*层将连续显示,如果我给“Elect”作为第二个查询的字符串,那么所有Elect-*层将切换其可见性
谢谢
T、 婆罗门南丹

Jef! 发表于 2022-7-5 13:56:00

你好。
有些事情我不太明白。
如果要为要切换的层请求字符串,为什么会要求您为不切换的层提供字符串?(即:如果要切换Elect*,切换*Elect并不意味着也表示不切换ARCH*?这就像在询问某人的目的地之前询问他们不想去的地方…)。它的行为也可能令人恼火;假设你打开了一层“elect cable”,其他的都关闭了。切换“Elect*”将使您最终打开Elect灯/Elect设备,但也会关闭“Elect电缆”。
你知道本地命令Laywalk吗?它似乎比所要求的lisp更实用。您可以从一个对话框开始,该对话框包含每个层的当前开/关状态,并可以使用control+Select来独立切换它们。它也可以与关键字一起使用,即键入Elect*,然后输入,所有Elect都将打开。然后取消选中过滤器复选框,all elect*将保持打开(选中),其他层将显示在列表中(未选中,因此仍处于关闭状态)。使用控制+鼠标选择,您可以独立切换它们。我经常使用laywalk/layiso/layon,从不觉得需要使用任何lisp来控制开/关状态。试试看,如果它不适合你的需要,请告诉我原因,我会看看我能做些什么。如果它确实适合您的需要,请相应地标记此答案。
干杯

BIGAL 发表于 2022-7-5 14:36:06

可以从命令行运行layer
 
-la off ARCH*on Elect*F asdf-1*等
页: [1]
查看完整版本: lisp中的修改。切换