[求助]请问各位大侠,怎么样才能叫 从CAD中导出的文字是按顺序的呢?
怎么样才能叫从CAD中的导出文字是按顺序的在导出的文本文件中 的文字是按顺序的那,
请各位大侠 附代码 !!!!谢谢了 各位。
你要按位置顺序呢,还是按字母顺序
如果是位置顺序,则须在选择后对各个文字实体排序,因为选择时选择是无序的(至少我还没找出其顺序),这个函数我写过,不过使用比较麻烦,你要我可以给你,如果是按字母顺序,那就将文字实体提取文字字符串后,用普通的编程方法将其排序
谢谢大侠, 我是用位置排序的,我可以看一下嘛?
我想都看看,谢谢你了!!急需大侠的帮助 谢谢大侠, 我是用位置排序的,我可以看一下嘛?
函数
因为是对表进行排序,所以要排序实体,必须将其做成其实体名的列表,再进行排序。做的粗糙,如有好的建议,希望不吝赐教。(具体对数字的排序我用的是选择法)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;功能:给表序
;lists---需要排序的表
;funs----排序方法
;"x" 为按X轴由小到大排序
;"y" 为按Y轴由小到大排序
;一般的数字表排序输入nil
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun sort(lists funs / n i d1 d_1 d1v d_1v getptx getpty tmp mn)
(defun getptx(sname / sinf2 pts)
(setq sinf2 (entget sname))
(setq pts (cadr (assoc 10 sinf2)))
pts
)
(defun getpty(sname / sinf2 pts)
(setq sinf2 (entget sname))
(setq pts (caddr (assoc 10 sinf2)))
pts
)
(setq i 0)
(while (< i (1- (length lists)))
(setq mn i)
(setq j (1+ i))
(while (< j (length lists))
(setq d1 (nth j lists))
(setq d_1 (nth mn lists))
(cond
((= funs "x") (progn (setq d1v (getptx d1)) (setq d_1v (getptx d_1))))
((= funs "y") (progn (setq d1v (getpty d1)) (setq d_1v (getpty d_1))))
((= funs nil) (progn (setq d1v d1) (setq d_1v d_1)))
);cond
(if (< d1v d_1v)
(setq mn j)
)
(setq j (1+ j))
)
(setq tmp (nth mn lists))
(setq lists (modlist lists (nth i lists) mn))
(setq lists (modlist lists tmp i))
(setq i (1+ i))
);while1
lists
) ;;取得图层所有文本.
(defun c:lout()
(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文本导出TXT")
页:
[1]