单选改为多选
现状只能单选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)
)
(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
第一个单选是定义某个块作为参照对象,然后依此参照选择符合要求的块,你这个程序目前就是多选啊,
希望 参照的对象是多个 (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)
) kwok 发表于 2022-12-18 11:37
(defun c:SM (/ blkname ss)
(setq blkname (cdr(assoc 2 (entget(car(entsel "\n选择目标图块... ...
谢谢~~
希望改成目标块可以是多个,如:块A,块B,块C... xyp1964 发表于 2022-12-18 12:06
(defun c:tt (/ ss0 bn lst i s1)
(princ "\n选择目标图块: ")
(if (setq ss0 (ssget '((0 . "insert ...
谢谢您!可以了
页:
[1]