flytoday 发表于 2012-11-20 18:30:06

求别人标注好的坐标输出TXT格式



输出样式:
X值                Y值
87753.815,52860.248

测试文件



麻烦各位大侠了谢谢~~~~~~~~~~~~~~

ZZXXQQ 发表于 2012-11-20 18:30:07


(defun c:tt ()
(setvar "CMDECHO" 0)
(if (setq ss (ssget '((0 . "TEXT") (1 . "X=*,Y=*")))) (progn
(setq i 0 dll (list))
(repeat (sslength ss)
   (setq ent (entget(ssname ss i))
         i (1+ i)
         dll (cons (cons (cdr(assoc 10 ent)) (cdr(assoc 1 ent))) dll))
)
(setq dll (reverse dll))
(setq sdll (vl-sort dll '(lambda (x y) (< (caar x) (caar y)))))
(setq sdll (vl-sort sdll '(lambda (x y) (< (cadar x) (cadar y)))))
(setq fn (if fn fn ""))
(if (setq fn (getfiled "输出文件名" fn "txt" 1)) (progn
   (setq fp (open fn "w"))
   (setq ppt T)
   (princ "X值         Y值" fp)
   (foreach x sdll
    (if ppt
   (princ (strcat "\n" (substr (cdr x) 3)) fp)
   (princ (strcat "" (substr (cdr x) 3)) fp)
    )
    (setq ppt (not ppt))
   )
   (close fp)
   (startapp "notepad" fn)
))
))
(princ)
)

vlisp2012 发表于 2012-11-20 19:59:41

手动选取,还是框选啊,如果手动选取的话,应该不难!

USER2128 发表于 2012-11-20 20:51:24

版主可真快,刚准备上传,版主的已弄好了!佩服!

USER2128 发表于 2012-11-20 20:55:33

本帖最后由 USER2128 于 2012-11-20 20:59 编辑

我还是上传吧! (defun c:tt ( / ss n info ent txt pt t_h tmp tmp1 tmp2 f_n f_op)
(setq ss (ssget '((0 . "TEXT") (1 . "X=*,x=*"))))
(setq n 0)
(setq info '())
(repeat (if ss (sslength ss) 0)
    (setq ent (entget (ssname ss n))
    txt (cdr (assoc 1 ent))
    pt(cdr (assoc 10 ent))
    t_h (cdr (assoc 40 ent))
    )
    (setq info (append info (list (list pt txt t_h))))
    (setq n (1+ n))
    )
(command "_.zoom" "_e")
(setq info (mapcar '(lambda(x)
    (progn (setq tmp (car x))
      (setq tmp1 (mapcar '(lambda(y) (- y (caddr x))) tmp)
      tmp2 (mapcar '(lambda(y) (+ y (caddr x))) tmp))
      (and (setq ss_tmp (ssget "c" tmp1 tmp2 '((0 . "TEXT") (1 . "Y=*,y=*"))))
   (setq tmp (cdr (assoc 1 (entget (ssname ss_tmp 0)))))
   (setq x (list (car x) (cadr x) tmp))
   )
      x)) info))
(setq f_n(getvar "DWGname")
f_n(strcat (substr f_n 1 (- (strlen f_n) 4)) ".txt")
f_n(strcat (getvar "DWGPREFIX") f_n)
)
(setq f_op (open f_n "w"))
(princ "   X 值                Y 值\n" f_op)
(mapcar '(lambda(x)
       (princ (substr (cadrx) 3) f_op)
       (princ ", " f_op)
       (princ (substr (caddr x) 3) f_op)
       (princ "\n" f_op)
       ) info)
(close f_op)
(princ)
)

flytoday 发表于 2012-11-20 21:01:47

谢谢Z版。。如果能在引线端加入编号就非常好了。。
输出的时候是这样样子的
输出样式:
   X值      Y值
1,87753.815,52860.248
逗号也要最好。。不知道Z版老大能不能出手下谢谢~

USER2128 发表于 2012-11-20 21:03:58

本帖最后由 USER2128 于 2012-11-20 21:09 编辑

USER2128 发表于 2012-11-20 20:55 http://bbs.mjtd.com/static/image/common/back.gif
我还是上传吧!

在引线端加入编号,程序很容易改的,就留与你自己做作业吧。

USER2128 发表于 2012-11-20 22:14:10

输出文件与DWG文件同目录,文件名也相同

flytoday 发表于 2012-11-20 22:29:50

哦………这个没注意看……后来发现Z版那个……提取的如果能以X.坐标最小的那组坐标从小到大排列最好哈………

USER2128 发表于 2012-11-20 23:03:57

我猜,到头来你还是会用我的程序,只是想排序的话加上排序就行了。原因吗,你就仔细查看一下你的输出结果吧。
页: [1] 2
查看完整版本: 求别人标注好的坐标输出TXT格式