(DEFUN C:TT ( / ss ff ss1 en pt x y)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setvar "dimzin" 0)
(vl-load-com);;加载vlax扩展函数
(setq ss (ssget '((0 . "point"))) n 0);;请选择点
(if (/= ss nil)
(progn
(setq ff (open "d://文字到TXT.txt" "w") ss1 '());;在D盘建立记事本《文字到TXT》这里可以查看内容
(repeat (sslength ss);;循环选择
(setq en (ssname ss n) n (+ n 1);;提取图元
pt (cdr (assoc 10 (entget en)));;取得点坐标
ss1 (cons pt ss1);;加入表
)
)
(setq ss1 (vl-sort ss1 (function (lambda (x y)(< (car x) (car y))))));;X排序从左到右
(setq ss1 (vl-sort ss1 (function (lambda (x y)(> (cadr x) (cadr y))))));;Y排序从上到下
(foreach en ss1;;函数遍历表,将其中每一个元素依次赋给变量,并对每一个表达式求值
(setq x (rtos (car en) 2 5))
(setq y (rtos (cadr en)2 5));;取得Y坐标精确到小数点后5位
(princ x ff)
(princ "," ff)
(princ y ff)
(princ "\n" ff)
)
(close ff)
)
)
(princ)
)
这个TT命令修改了一下,可以对点坐标排序,保存到D盘《文字到TXT》记事本里面;实际上坐标需要X=;Y=这个标记的,这个标记表示大地坐标;大地坐标X=cad里面的y坐标,同样的Y=cad里面的x坐标,所以不能够随便修改文字格式。
提供个思路:框选,获取点表,遍历输出
试过了,tt好用的。用tt即可,其余的可以到excel去处理。当然如果对lisp比较熟悉,也可以用lisp全部处理掉。