检查层上的圆
尊敬的各位:,我在写Lisp程序,有人能帮我吗?
我有许多层供用户通过dcl对话框选择,在用户选择项目(可能不止一个)后,我将打开此层并检查是否在此层中有圆形对象。因为超过50项。如果我用If-then-else检查每个标志,我的lisp程序就会变得很长。还有其他好方法吗?
(if (= item1 1)
(progn
(setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))
(setq theLayers (vla-get-layers acadDocument))
(vlax-for item theLayers (vlax-put-property item "LayerON" ':vlax-false))
(command "-layer" "On" (vlax-get-property item1-layer 'Name) "")
(setq sset (ssget "_a" (LIST '(0 . "CIRCLE") (8 . item1-layer) (cons 410 (getvar "CTAB")))))
)
)
(if (= item2 1)
(progn
(setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))
(setq theLayers (vla-get-layers acadDocument))
(vlax-for item theLayers (vlax-put-property item "LayerON" ':vlax-false))
(command "-layer" "On" (vlax-get-property item2-layer 'Name) "")
(setq sset (ssget "_a" (LIST '(0 . "CIRCLE") (8 . item2-layer) (cons 410 (getvar "CTAB")))))
)
)
.
.
.
.
. 看看FOREACH函数——这意味着您必须将这些层名称存储在一个列表中。
(foreach Item '(1 2 3 4 5)
(print Item)
)
当做 谢谢我将尝试使用这个函数来完成我的lisp
没问题!
此外,为了处理重复代码,最好编写一个带有该部分参数的函数并调用它,而不是在多个地方使用同一段代码。这将确保代码更加紧凑,并帮助您维护它,即它只在一个地方进行更改。
在这种情况下,您的代码摘录将变成:
关于, 非常感谢,这真的太棒了!
页:
[1]