明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 783|回复: 8

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

[复制链接]
发表于 2023-10-29 10:05:07 | 显示全部楼层 |阅读模式
求输入tt提示款选范围,款选范围后 提示选择块  ,选则一个块后选中刚才范围内的块,提示选中个数 并亮显

点评

白字太多!  发表于 2023-10-29 13:10
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-10-29 10:45:27 | 显示全部楼层
本帖最后由 jun353835273 于 2023-10-29 10:46 编辑
  1. <div class="blockcode"><blockquote>(defun c:tt( / p1 p0 blk get ss)
  2. (setq p0 (getpoint "\n指定角点:"))
  3. (setq p1 (getcorner p0 "\n指定另一点:"))
  4. (setq blk (entsel "\n 选一个块"))
  5. (if (and p0 p1 blk
  6.    (setq get (entget (car blk)))
  7.    (= (cdr (assoc 0 get)) "INSERT")
  8.     )
  9.   (progn
  10. (setq blk (cdr (assoc 2 get)))
  11. (setq ss (ssget "c"  p0 p1 (list '(0 . "INSERT")(cons 2 blk))))
  12. (sssetfirst  nil ss)
  13.     )
  14. )
  15. (princ)
  16. )

发表于 2023-10-29 11:03:20 | 显示全部楼层
本帖最后由 vitalgg 于 2023-10-29 11:31 编辑

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





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


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 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))
(sssetfirst  nil ss)
    )
)
(princ"\n当前范围所选择块共计")
(princ ss_gs)
(princ "个")
(princ)
)
 楼主| 发表于 2023-10-29 12:20:31 | 显示全部楼层
 楼主| 发表于 2023-10-29 12:22:32 | 显示全部楼层
vitalgg 发表于 2023-10-29 11:03
先选块,再框范围,如果不框范围就选中所有同名块。(支持动态块)

谢谢大神..
 楼主| 发表于 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指 ...

谢谢小星..
 楼主| 发表于 2023-10-29 20:11:49 | 显示全部楼层

波总的  不过这个不是先选择范围 而是先选择了块
(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 (wcmatch  e "`*U*")
                                                (strcat "`" e)
                                                e
                                        )
                                )
                                (setq e (ssget (list (cons 2 e))))
                        )
                (progn
                        (sssetfirst nil e)
                        (alert (strcat "\n选中"(itoa (sslength e))"个"))
                )
        )
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 08:56 , Processed in 0.174550 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表