zj12345678 发表于 2011-3-30 16:16:20

求个"CAD按指定顺序自动导出文字"的LISP程序

已能够使用LISP编程实现将图中框选部分的文字导出至*.TXT.
但生成的*.TXT中的"文字"是混乱的,无顺序,基本没用.
现希望:CAD导出文字时,框选后,依据所"画出的直线的方向"所指示的顺序,按顺序导出"文字"!

能实现吗?

拜求!
谢谢各位大侠!

Gu_xl 发表于 2011-3-30 22:08:24

回复 zj12345678 的帖子

取文字的x坐标由小到大排序!vl-sort函数
(vl-sort textenlist '(lambda (e1 e2) (< (cadr(assoc 10 (entget e1)))(cadr(assoc 10 (entget e2))))))
;;;textenlist 为text图元列表

zj12345678 发表于 2011-3-31 14:14:46

谢谢版主.
上述特例的文字排序,可根据X或Y座标顺序对文字进行排序,
实际使用中,文字可能正方向.可能负方向,比较复杂.
想法:希望以"所画出的PLINE线为导引,完全依据线的走向确定导出的文字顺序"
有可能实现吗?

革天明 发表于 2011-6-5 08:10:34

试试手工给它一下路径方向,再判断一下坐标,应该可以实现抛物线型的复杂曲线

yxh1202 发表于 2011-6-8 17:36:22

学习了,有时候要大量导出CAD的文字,版主的文章给了很好的启示,谢谢。

cooolseee 发表于 2011-6-9 14:53:12

按PLine顺序读图形其实是有办法的,在每个读取数据点产生一个PLINE顶点,然后按定点排序,产生一个顶点表,并以顶点表为选取点进行度数据,就OK了

lengxiaxi 发表于 2025-1-13 09:38:36

一堆文字零散分布;可选择从上到下,从左到右;   或从左到右,从上到下;

也就是可选指定顺序,就更完美了

借花献佛,下面的默认顺序,是从上到下第一优先,从左到右第二优先;

(defun c:tout()
(setq flnm (getfiled "保存文件名" "" "txt" 1))
 (setq fn (open flnm "w"))
 (setq s (ssget))
 (setq n (sslength s))
 (setq index ( - n 1))
 (repeat n
  (setq ents (entget (ssname s index)))
  (setq index ( - index 1))
  (setq ent (assoc 0 ents))
  (if ( = "TEXT" (cdr ent))
    (progn
      (setq txt (cdr (assoc 1 ents)))
      (write-line txt fn)
    )
  )
 )
(close fn)
)
(princ "\n文本导出")
页: [1]
查看完整版本: 求个"CAD按指定顺序自动导出文字"的LISP程序