求输入tt提示款选范围,款选范围后 提示选择块 ,选则一个块后选中刚才范围内的....
求输入tt提示款选范围,款选范围后 提示选择块,选则一个块后选中刚才范围内的块,提示选中个数 并亮显本帖最后由 jun353835273 于 2023-10-29 10:46 编辑
<div class="blockcode"><blockquote>(defun c:tt( / p1 p0 blk get ss)
(setq p0 (getpoint "\n指定角点:"))
(setq p1 (getcorner p0 "\n指定另一点:"))
(setq blk (entsel "\n 选一个块"))
(if (and p0 p1 blk
(setq get (entget (car blk)))
(= (cdr (assoc 0 get)) "INSERT")
)
(progn
(setq blk (cdr (assoc 2 get)))
(setq ss (ssget "c"p0 p1 (list '(0 . "INSERT")(cons 2 blk))))
(sssetfirstnil ss)
)
)
(princ)
)
本帖最后由 vitalgg 于 2023-10-29 11:31 编辑
先选块,再框范围,如果不框范围就选中所有同名块。(支持动态块)
已升级跟上面的选择同一块功能合并。
源码: https://gitee.com/atlisp/packages/blob/main/at-block/at-block.lsp311~325行
在那个楼上的基础上 加了显示个数,
(defun c:tt( / p1 p0 blk get ss ss_gs)
(setq p0 (getpoint "\n指定角点:"))
(setq p1 (getcorner p0 "\n指定另一点:"))
(setq blk (entsel "\n 选一个块"))
(if (and p0 p1 blk
(setq get (entget (car blk)))
(= (cdr (assoc 0 get)) "INSERT")
)
(progn
(setq blk (cdr (assoc 2 get)))
(setq ss (ssget "c"p0 p1 (list '(0 . "INSERT")(cons 2 blk))))
(setq ss_gs(sslength ss))
(sssetfirstnil ss)
)
)
(princ"\n当前范围所选择块共计")
(princ ss_gs)
(princ "个")
(princ)
) jun353835273 发表于 2023-10-29 10:45
谢谢大神.. vitalgg 发表于 2023-10-29 11:03
先选块,再框范围,如果不框范围就选中所有同名块。(支持动态块)
谢谢大神.. 嘒彼小星 发表于 2023-10-29 12:12
在那个楼上的基础上 加了显示个数,
(defun c:tt( / p1 p0 blk get ss ss_gs)
(setq p0 (getpoint "\n指 ...
谢谢小星.. 664571221 发表于 2023-10-29 12:24
谢谢小星..
波总的不过这个不是先选择范围 而是先选择了块
(defun c:tt (/ e)
(if (and (setq e (ssget ":E:S" '((0 . "INS*"))))
(setq e (ssget (list (assoc 2 (entget (ssname e 0))))))
)
(progn
(sssetfirst nil e)
(alert (strcat "\n选中"(itoa (sslength e))"个"))
)
)
)
(defun c:tt (/ e)
(if (and (setq e (ssget ":E:S" '((0 . "INS*"))))
(setq e (cdr (assoc 2 (entget (ssname e 0)))))
(setq e
(if (wcmatche "`*U*")
(strcat "`" e)
e
)
)
(setq e (ssget (list (cons 2 e))))
)
(progn
(sssetfirst nil e)
(alert (strcat "\n选中"(itoa (sslength e))"个"))
)
)
)
页:
[1]