x_s_s_1 发表于 2022-11-6 17:37:33

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"啥也没有")
   )
)
)



xtjd 发表于 2022-11-6 17:37:34

;将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))
)

xyp1964 发表于 2022-11-6 22:16:12

(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)
)

x_s_s_1 发表于 2022-11-7 06:18:34

谢谢院长,采用command select有些版本autocad会提示错误,需改为command-s,导致我无法确定用command还是command-s,请问还有其它方法吗?

guosheyang 发表于 2022-11-7 10:49:05

grread 一般都是用于动态显示    你这个代码是在那种情况下适用呢为何不直接用 ssget ?

x_s_s_1 发表于 2022-11-7 16:46:20

guosheyang 发表于 2022-11-7 10:49
grread 一般都是用于动态显示    你这个代码是在那种情况下适用呢为何不直接用 ssget ?

一键keyword

chslwj521 发表于 2023-2-21 15:10:28

问题解决了么?grread,没有捕捉功能
页: [1]
查看完整版本: grread左键后,如何让后续的ssget函数可多次选择