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=&amp;threadid=350909&amp;perpage=15&amp;display=&amp;pagenumber=2">http://www.xdcad.net/forum/showthread.php?s=&amp;threadid=350909&amp;perpage=15&amp;display=&amp;pagenumber=2</a></p><p>此类问题实例可见:</p><p><a href="http://ljttjl.ys168.com">http://ljttjl.ys168.com</a>&nbsp; <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....
页: 1 [2] 3 4
查看完整版本: 如何用lisp提取多边形内的文字注记?请ZZXXQQ进来看看