求cad lisp,根据闭合多段线内的相同文字来批量选择对应文字外的闭合多段线框,如下图

 我来答
朱06CAD
2016-08-29 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18069
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
  1. 这个是大型的程序,需要分析对象。

  2. 一般情况下,文字与多段线是编组的,如果不是编组,又是另外的情况。

  3. 所以需要dwg文件来测试程序是否有效。

更多追问追答
追问
不是编组,闭合框和文字是单独分开的
简单的来说,就是根据相同文字内容检测每个文字外是否有闭合框,如果有就选择该闭合框,如果没有就检测另一个相同文字,直到选择了所有符合条件的闭合框;
追答

autolisp代码如下:

(defun c:tes ( / #os1 &k2 &kw1 &kw2 &kw5 &ss1 &tr1 x)
 (setq #os1 (getvar "osmode"))
 (princ "\n请选择参考文字")
 (if (and (setq &kw1 (ssget ":S" '((0 . "TEXT"))))
          (princ "\n请选择多段线")
          (setq &kw2 (ssget '((0 . "LWPOLYLINE") (-4 . "<OR") (70 . 1) (70 . 129) (-4 . "OR>"))))
     )
  (progn
   (setvar "osmode" 0)
   (setq &tr1 (assoc 1 (entget (ssname &kw1 0))) &kw5 (ssadd))
   (while (setq &k2 (ssname &kw2 0))
    (setq &kw2 (ssdel &k2 &kw2))
    (setq &ss1 (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) (entget &k2))))
    (if (setq &kw1 (ssget "WP" &ss1 (list '(0 . "TEXT,MTEXT") &tr1)))
     (setq &kw5 (ssadd &k2 &kw5))
    )
   );while
   (setvar "osmode" #os1)
   (if (ssname &kw5 0) (sssetfirst nil &kw5) )
  )
 )
 (princ)
)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式