求cad lisp,根据闭合多段线内的相同文字来批量选择对应文字外的闭合多段线框,如下图
1个回答
2016-08-29 · 知道合伙人软件行家
关注
展开全部
这个是大型的程序,需要分析对象。
一般情况下,文字与多段线是编组的,如果不是编组,又是另外的情况。
所以需要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)
)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询