刘炎华 发表于 2022-12-18 11:20:49

单选改为多选

现状只能单选1个目标对象,希望能优化成可以框选多个目标对象。
烦请各位大佬出手相助



(defun c:SM (/ blkname ss)
        (setq blkname (cdr(assoc 2 (entget(car(entsel "\n选择目标图块..."))))))
        (setq ss(ssget (list '(0 . "insert") (cons 2 (strcatblkname )))))
        (setq ss1 (ssget "x" (list '(0 . "insert") (cons 2 (strcatblkname )))))
        (if (not ss)(setq ss ss1))
        (command"PSELECT" ss "")
        (princ (strcat "\n共选中了" (itoa (sslength ss)) " 个对象\n"))
        (princ)
)


xyp1964 发表于 2022-12-18 11:20:50

(defun c:tt (/ ss0 bn lst i s1)
(princ "\n选择目标图块<退出>: ")
(if (setq ss0 (ssget '((0 . "insert"))))
    (progn
      (setq i        -1
          lst        '()
      )
      (while (setq s1 (ssname ss0 (setq i (1+ i))))
        (setq bn (cdr(assoc 2(entget s1))))
        (if (not (member bn lst))
          (setq lst (cons bn lst))
        )
      )
      (setq bn (mapcar '(lambda (x) (strcat x ",")) lst)
          bn (apply 'strcat bn)
      )
      (princ "\n选择统计范围<退出全选>: ")
      (setq ss (ssget (list '(0 . "insert") (cons 2 bn))))
      (setq ss1 (ssget "x" (list '(0 . "insert") (cons 2 bn))))
      (if (not ss)
        (setq ss ss1)
      )
      (command "PSELECT" ss "")
      (princ
        (strcat "\n共选中了" (itoa (sslength ss)) " 个对象\n")
      )
      (sssetfirst nil ss)
    )
)
(princ)
)

啵浪鼓 发表于 2022-12-18 11:25:21

第一个单选是定义某个块作为参照对象,然后依此参照选择符合要求的块,你这个程序目前就是多选啊,

刘炎华 发表于 2022-12-18 11:27:17

啵浪鼓 发表于 2022-12-18 11:25
第一个单选是定义某个块作为参照对象,然后依此参照选择符合要求的块,你这个程序目前就是多选啊,

希望 参照的对象是多个

kwok 发表于 2022-12-18 11:37:57

(defun c:SM (/ blkname ss)
      (setq blkname (cdr(assoc 2 (entget(car(entsel "\n选择目标图块..."))))))
      (setq ss(ssget (list '(0 . "insert") (cons 2 (strcatblkname )))))
       (sssetfirst nil ss)
      (princ (strcat "\n共选中了" (itoa (sslength ss)) " 个对象\n"))
      (princ)
)

刘炎华 发表于 2022-12-18 11:50:14

kwok 发表于 2022-12-18 11:37
(defun c:SM (/ blkname ss)
      (setq blkname (cdr(assoc 2 (entget(car(entsel "\n选择目标图块... ...

谢谢~~
希望改成目标块可以是多个,如:块A,块B,块C...

刘炎华 发表于 2022-12-18 12:21:51

xyp1964 发表于 2022-12-18 12:06
(defun c:tt (/ ss0 bn lst i s1)
(princ "\n选择目标图块: ")
(if (setq ss0 (ssget '((0 . "insert ...

谢谢您!可以了
页: [1]
查看完整版本: 单选改为多选