ljttjl
发表于 2009-12-16 15:12:00
<p>此题的关键问题是判断某类文字的插入点在一个闭合线内。</p><p>关于这个问题的贴如下:</p><p><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=77921">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=77921</a></p><p><a href="http://www.xdcad.net/forum/showthread.php?s=&threadid=350909&perpage=15&display=&pagenumber=2">http://www.xdcad.net/forum/showthread.php?s=&threadid=350909&perpage=15&display=&pagenumber=2</a></p><p>此类问题实例可见:</p><p><a href="http://ljttjl.ys168.com">http://ljttjl.ys168.com</a> <a class="actuator" id="F480631_20090411根据房屋标注文字加入cass编码属性" href="javascript:">20090411目录 根据房屋标注文字加入cass编码属性</a> 程序演示</p>
liminnet
发表于 2009-12-16 15:28:00
xyz002
发表于 2009-12-16 22:17:00
本帖最后由 作者 于 2009-12-17 0:09:11 编辑 <br /><br /> <p>本来还云里雾里的,<font face="Verdana" color="#61b713"><strong>ljttjl</strong><font color="#000000">的提示,令在下恍然大悟,学习了。看了<a class="actuator" id="F480631_20090411根据房屋标注文字加入cass编码属性">20090411</a>加属性的程序,就是我要的效果,能方便给个lisp程序么?<a href="mailto:stone_freemail@sina.com">stone_freemail@sina.com</a>,不胜感谢!</font></font></p><p><font face="Verdana" color="#da2549"><strong>ZZXXQQ</strong><font color="#000000">的确是好人哪,对一个新手有如此的耐心,这年头不多见了,赞一个!</font></font></p>
liminnet
发表于 2009-12-17 08:54:00
xyz002
发表于 2009-12-17 11:54:00
<p>多谢<font face="Verdana" color="#61b713"><strong>liminnet</strong><font color="#000000">,那俺就再麻烦</font><font color="#da2549"><strong>ZZXXQQ</strong></font><font color="#000000">版主:对于多个多边形内的文字分别提取,循环如何实现?我最终是要将提取的文字添加到每个多边形的扩展数据中,如(-3 ("A" (1000 . "1000")) ("B" (1070 . <font color="#f73809"><strong>2</strong></font>)))</font></font></p>
xyz002
发表于 2009-12-18 14:59:00
<p>如果多边形内无文字,对该多边形新建一个选择集,并从原来的选择集中删除,该怎么写呢?</p>
liminnet
发表于 2009-12-18 15:16:00
ZZXXQQ
发表于 2009-12-18 19:09:00
试试看。
;提取多边形内文字 明经 ZZXXQQ 2009.12.18
(defun c:tt ()
(if (and
(princ "\n选择封闭多边形 :"))
(setq ss (ssget '((0 . "LWPOLYLINE"))))
) (progn
(setq n 0)
(repeat (sslength ss)
(setq en (ssname ss n))
(setq ent (entget en))
(if (/= (cdr(assoc 70 ent)) 0) (progn
(setq pts (list))
(mapcar '(lambda(x) (if (= (car x) 10) (setq pts (cons (cdr x) pts)))) ent)
(reverse pts)
(if (setq ss1 (ssget "WP" pts '((0 . "TEXT")))) (progn
(setq i 0 txtl (list))
(repeat (sslength ss1)
(setq txtl (append txtl (list(list "A" (cons 1000 (cdr(assoc 1 (entget(ssname ss1 i)))))))))
(setq i (1+ i))
)
))
(setq ent (append ent (list (list -3 txtl (list "B" (cons 1070 2))))))
(entmod en)
))
(setq n (1+ n))
)
))
(princ)
)
xyz002
发表于 2009-12-19 00:00:00
<p>版主辛苦了!</p><p>程序运行后,错误: DXF 组不正确: (-3 (("A" (1000 . "5"))) ("B" (1070 . 2))),格式没问题,这是什么错误呢</p>
another2121
发表于 2010-12-13 11:38:04
好贴。。。支持ZZXXQQ....