664571221 发表于 2023-10-29 10:05:07

求输入tt提示款选范围,款选范围后 提示选择块 ,选则一个块后选中刚才范围内的....

求输入tt提示款选范围,款选范围后 提示选择块,选则一个块后选中刚才范围内的块,提示选中个数 并亮显

jun353835273 发表于 2023-10-29 10:45:27

本帖最后由 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:03:20

本帖最后由 vitalgg 于 2023-10-29 11:31 编辑

先选块,再框范围,如果不框范围就选中所有同名块。(支持动态块)





已升级跟上面的选择同一块功能合并。


源码: https://gitee.com/atlisp/packages/blob/main/at-block/at-block.lsp311~325行

嘒彼小星 发表于 2023-10-29 12:12:51

在那个楼上的基础上 加了显示个数,
(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)
)

664571221 发表于 2023-10-29 12:20:31

jun353835273 发表于 2023-10-29 10:45


谢谢大神..

664571221 发表于 2023-10-29 12:22:32

vitalgg 发表于 2023-10-29 11:03
先选块,再框范围,如果不框范围就选中所有同名块。(支持动态块)




谢谢大神..

664571221 发表于 2023-10-29 12:24:03

嘒彼小星 发表于 2023-10-29 12:12
在那个楼上的基础上 加了显示个数,
(defun c:tt( / p1 p0 blk get ss ss_gs)
(setq p0 (getpoint "\n指 ...

谢谢小星..

664571221 发表于 2023-10-29 20:11:49

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]
查看完整版本: 求输入tt提示款选范围,款选范围后 提示选择块 ,选则一个块后选中刚才范围内的....