明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1145|回复: 4

[提问] lisp怎么实现选择一个矩形,获取矩形内的文字,并选中。

[复制链接]
发表于 2024-3-20 19:43:23 | 显示全部楼层 |阅读模式
[size=24.225pt]
  • (defun c:wz ()
  •    (setq ss (ssget '((0 . "LWPOLYLINE"))));;这里可以选择矩形
  •   (if (setq ss (ssget '((0 . "TEXT"))));;这里可以选择文字,
  •     (sssetfirst nil ss)
  •   )
  •   (princ)
  • ;;我想实现选择矩形内的文字。
  • )

发表于 2024-3-20 20:27:26 | 显示全部楼层


(defun c:wz (/ dxf10 i s s1 ss)  
        (defun dxf10 (e / s)  
                (if (setq s
                                        (mapcar 'cdr
                                                (vl-remove-if-not '(lambda (x) (= (car x) 10))(entget e))
                                        )
                                )
                        (if (= 1 (length s))(car s)s)
                )
        )
  (setq i -1)
  (if  (setq ss (ssget '((0 . "LWPOLYLINE")(90 . 4)(70 . 1))));;这里可以选择矩形
    (while(and(setq s1 (ssname ss (setq i (1+ i)))))               
                        (setq s(dxf10 s1))
                        (if (setq ss (ssget "cp" s '((0 . "TEXT"))));;这里可以选择文字,
                                (sssetfirst nil ss);;这里的ss是每个矩形的,如果需要其他操作写这里就行,当前的亮显,仅仅最后一个选择集亮显,楼主应该懂吧
                                ;对应其他功能写这里
                        )
                )
  )
        (princ)
)

评分

参与人数 2明经币 +2 金钱 +20 收起 理由
tomonkey239 + 1 感谢能帮助的人
NSHX + 1 + 20 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2024-3-21 09:24:25 | 显示全部楼层
谢谢分享谢谢分享谢谢分享
发表于 2024-3-21 17:32:31 | 显示全部楼层
(defun c:11 (/ s1 s2 p1 p2)  
(if  (setq s1 (ssget ":E:S" '((0 . "LWPOLYLINE")(90 . 4)(70 . 1))));;选择矩形
(progn
(vla-getboundingbox (vlax-ename->vla-object (ssname s1 0) )'minpoint 'maxpoint) ;获得包围盒
(setq p1(vlax-safearray->list minpoint) p2(vlax-safearray->list maxpoint)) ;包围盒最小与最大点
(setq s2 (ssget "W" p1 p2 '((0 . "*TEXT")))) ;;W表示窗选,与矩形相交的文字不会被选中,如还想选中与矩形相交的文字,把W改为C
(sssetfirst nil s2)
)
)
(princ))
 楼主| 发表于 2024-3-21 17:54:21 | 显示全部楼层
qazxswk 发表于 2024-3-21 17:32
(defun c:11 (/ s1 s2 p1 p2)  
(if  (setq s1 (ssget ":E:S" '((0 . "LWPOLYLINE")(90 . 4)(70 . 1))));; ...

完美,我之前也是这个思路,卡在获取包围范围的坐标的求取上了,☆⌒(*^-゜)v THX!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 21:22 , Processed in 0.173480 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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