grread左键后,如何让后续的ssget函数可多次选择
下面这段代码,左键后只能选择一次,请问如何能像(ssget)一样追加选择,而且让选中的图元显示被选择状态,谢谢。(defun c:tt ()
(setq loop t)
(prompt "\n左键框选")
(while loop
(setq gr (grread t 15 2)
pt (cadr gr)
gr (car gr)
)
(cond((= 3 gr) (setq oi 1
loop nil
)
)
((or (= 11 gr) (= 25 gr))
(setq oi 2
loop nil
)
))
)
(cond((= 1 oi)
(setq pt1 (getcorner pt "\n选择下一点:")
ss(ssget "c" pt pt1'((0 . "line")))
)
)
((= 2 oi)
(alert"啥也没有")
)
)
)
;将ssget写到while里
(defun c:t1 ()
(setq loop t sss(ssadd))
(prompt "\n左键框选")
(while loop
(setq gr(grread t 15 2) pt(cadr gr) gr(car gr))
(cond
((= 3 gr)
(setq pt1(getcorner pt "\n选择下一点:") ss(ssget "c" pt pt1 '((0 . "line"))))
(mapcar(function(lambda(x)
(if(ssmemb x sss)nil
(progn(setq sss(ssadd x sss))(redraw x 3))
)
)
)
(vl-remove-if 'listp(mapcar 'cadr(ssnamex ss))))
)
((or(= 11 gr) (= 25 gr))(setq loop nil))
)
)
(if sss(sssetfirst sss sss))
) (defun c:tt ()
(setq loop t)
(prompt "\n左键框选")
(while loop
(setq gr (grread t 15 2)
pt (cadr gr)
gr (car gr)
)
(cond ((= 3 gr)
(setq oi 1
loop nil
)
)
((or (= 11 gr) (= 25 gr))
(setq oi 2
loop nil
)
)
)
)
(cond ((= 1 oi)
(setq pt1 (getcorner pt "\n选择下一点:")
ss(ssget "c" pt pt1 '((0 . "line")))
ss1 (ssget '((0 . "line")))
)
(command "select" ss ss1 "")
(setq ss (ssget "p"))
(sssetfirst nil ss)
)
((= 2 oi) (alert "啥也没有"))
)
(princ)
) 谢谢院长,采用command select有些版本autocad会提示错误,需改为command-s,导致我无法确定用command还是command-s,请问还有其它方法吗? grread 一般都是用于动态显示 你这个代码是在那种情况下适用呢为何不直接用 ssget ? guosheyang 发表于 2022-11-7 10:49
grread 一般都是用于动态显示 你这个代码是在那种情况下适用呢为何不直接用 ssget ?
一键keyword 问题解决了么?grread,没有捕捉功能
页:
[1]