选择对象:或(A)ll
这应该很容易,但我正在努力。我想要一个例程用作使用以下方法的模板:提示:“选择对象:或(A)ll”
除非输入“A”,否则左键单击将启动“按项目选择”窗口,在这种情况下,所有内容(允许的过滤器)都被选中
到目前为止,我的代码是:
(defun c:select-opt (/ opt ss)
(setq opt (cond ((getkword "\nSelect objects: or (A)ll "))("s")))
(cond
((eq opt "a")
(setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
)
((eq opt "s")
(setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
)
)
(princ (itoa (sslength ss)))
(princ)
)
这是可行的,但首先需要右键单击,我想取消右键单击 你可以简单地使用
(setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
并在提示选择时键入“all”。
或
(princ "\nSelect objects or press enter to select all: ")
(or
(setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
(setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
) 这很奇怪,它可以在控制台中工作,但会产生;错误:lisp中的参数太少:
(defun c:select-opt ( ss )
(princ "\nSelect objects or press enter to select all: ")
(or
(setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
(setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
)
(princ (strcat "\n" (itoa (sslength ss))))
(princ)
) ( ss )应为:
( / ss ) 谢谢你Stefan&你也是Lee,很好 别担心 我仍然认为必须能够在命令中放入“cond”语句,首先见证绘制圆、圆弧或样条曲线。
或Trim,返回“选择对象或:”
哦,好吧 用一个简单的,如果是这样的话,也许?
(defun c:select-opt ( / ss)
(princ "\nSelect objects and press enter or press enter right away to select all: \n")
(if (not (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT")))))
(setq ss (ssget "_X" (list '(0 . "TEXT,MTEXT") (cons 410 (getvar 'ctab)))))
)
(princ (itoa (sslength ss)))
)
我将ssget _x仅限于当前选项卡,如果没有它,它将从所有选项卡和模型中进行选择。
干杯
杰夫! 那正是我想要的,谢谢你,杰夫!
问题在于
方法是误点击非文本项会使代码默认为ssget\u X 除了为(ssget“_X”)表达式添加布局过滤器外,请注意(if(not…)语句的操作与(或)语句相同。
在这两种情况下,只有当第一个表达式返回nil时,才会对第二个表达式求值。
页:
[1]
2