snight523 发表于 2015-10-27 16:19:44

请各位大侠给予帮助,修改一个导出复合线坐标的程序。

(defun c:tqzb (/)
    (setq cm (getvar "cmdecho"))
    (setvar "cmdecho" 0)
    (if (setq wjm (getfiled "请指定要保存的坐标文件" "e:\\" "txt" 1))
      (if (setq ssa (ssget '((0 . "LWPOLYLINE"))))
   (progn
         (setq fff (open wjm "w")
      n   (sslength ssa)
      i   0
      no0
    )
         (repeat n
         (setq dxf (entget (ssname ssa i))
      i   (1+ i)
      ptb (mapcar 'cdr (vl-remove-if-not '(lambda(x)(= (car x) 10)) dxf))
      ptb (mapcar '(lambda(x)(trans x 0 1)) ptb)
          )
          (foreach pt ptb
       (setq no (1+ no))
       (write-line
            (strcat ;(itoa no) ","
                  (rtos (carpt) 2 3) ","
                  (rtos (cadr pt) 2 3)
             )
             fff
       )
                )
         )
         (close fff)
         (princ (strcat "\n坐标已存入\"" wjm "\"中"))
   )
)
    )
    (setvar "cmdecho" cm)
    (princ)
)

以上摘抄别人的导出复合线坐标的命令,能否帮忙在导出数据前加一列数据。
现在的操作步骤如下:
1使用tqzb命令后弹出对话框--请指定要保存的坐标文件 这时候要输入文件名比如文件名120.5
2然后要选择对象(要提取坐标的复合线) 右键后 坐标已存入"C:\Users\dawes\Desktop\120.5.txt"中
这时候保存的txt文件 120.5中数据如下:(数据为复合线的结点坐标)
368.173,-96.282
495.815,-154.367
539.254,-100.955
595.390,-76.920
可否修改一下程序,使导出的数据前增加一列固定的数据 数值即120.5 使得生成的txt文件数据为
120.5,368.173,-96.282
120.5,495.815,-154.367
120.5,539.254,-100.955
120.5,595.390,-76.920

以上是对修改程序的一个设想,还请各位大侠给予帮助,各种感激。。。。

Andyhon 发表于 2015-10-27 17:02:40

(strcat ;(itoa no) ","
       (rtos (carpt) 2 3) ","
       (rtos (cadr pt) 2 3)
)

Try:
(strcat wjm ", "
       (rtos (carpt) 2 3) ","
       (rtos (cadr pt) 2 3)
)

snight523 发表于 2015-10-27 20:10:35

这样改还是不行,结果是这样的:
C:\Users\dawes\Desktop\120.5.txt,479.793,761.058
C:\Users\dawes\Desktop\120.5.txt,684.694,659.718
C:\Users\dawes\Desktop\120.5.txt,926.112,564.46
C:\Users\dawes\Desktop\120.5.txt,1086.382,536.085
C:\Users\dawes\Desktop\120.5.txt,1315.627,511.763
C:\Users\dawes\Desktop\120.5.txt,1709.2,444.879

snight523 发表于 2015-10-27 20:11:55

Andyhon 发表于 2015-10-27 17:02 static/image/common/back.gif
(strcat ;(itoa no) ","
       (rtos (carpt) 2 3) ","
       (rtos (cadr pt) 2 3)


你好 感谢你的回复。 修改后提取出的数据是这样的:
C:\Users\dawes\Desktop\120.5.txt,479.793,761.058
C:\Users\dawes\Desktop\120.5.txt,684.694,659.718
C:\Users\dawes\Desktop\120.5.txt,926.112,564.46
C:\Users\dawes\Desktop\120.5.txt,1086.382,536.085
C:\Users\dawes\Desktop\120.5.txt,1315.627,511.763
C:\Users\dawes\Desktop\120.5.txt,1709.2,444.879
wjm 是被定义成了一个路径

llsheng_73 发表于 2015-10-27 20:22:06

snight523 发表于 2015-10-27 20:11 static/image/common/back.gif
你好 感谢你的回复。 修改后提取出的数据是这样的:
C:\Users\dawes\Desktop\120.5.txt,479.793,761.058 ...

(strcat (vl-filename-base wjm)", "
       (rtos (carpt) 2 3) ","
       (rtos (cadr pt) 2 3)
)

菜卷鱼 发表于 2015-10-28 08:34:39

本帖最后由 菜卷鱼 于 2015-10-28 08:48 编辑

把 wjm 后缀处理掉


(strcat (vl-string-subst "," ".txt" wjm)
       (rtos (carpt) 2 3) ","
       (rtos (cadr pt) 2 3)
)

snight523 发表于 2015-10-29 07:27:34

谢谢帮忙,终于解决了。 llsheng_73 的方法可行

snight523 发表于 2015-10-29 07:28:09

llsheng_73 发表于 2015-10-27 20:22 static/image/common/back.gif
(strcat (vl-filename-base wjm)", "
       (rtos (carpt) 2 3) ","
       (rtos (cadr pt) 2 3)


非常感谢!! 帮了大忙了
页: [1]
查看完整版本: 请各位大侠给予帮助,修改一个导出复合线坐标的程序。