明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1112|回复: 9

[提问] 求助能否帮忙修改一下lisp,使得导出数据前加一列文字。

[复制链接]
发表于 2015-8-12 13:48:48 | 显示全部楼层 |阅读模式
(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
        no  0
    )
           (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 (car  pt) 2 3) ","
                    (rtos (cadr pt) 2 3)
             )
             fff
       )
                )
           )
           (close fff)
           (princ (strcat "\n坐标已存入\"" wjm "\"中"))
     )
)
    )
    (setvar "cmdecho" cm)
    (princ)
)

以上是找的导出复合线坐标的命令,能否在导出的txt文件前加一列相同的数字,就是输入的文件名。
例如 使用命令后输入了该断面的里程 导出数据为: 偏距,高程 能否修改后使得导出数据为 里程,偏距,高程
求助各位大神。谢谢



发表于 2015-8-12 22:12:42 | 显示全部楼层
写得不是很清楚,不知道下面的效果是不是你要的

(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  no 0)
       (write-line  "该断面的里程"  fff)
       (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 (car  pt) 2 3) "," "高程" (rtos (cadr pt) 2 3))  fff)
                )
           )
           (close fff)
           (princ (strcat "\n坐标已存入\"" wjm "\"中")))
          ))
    (setvar "cmdecho" cm)
    (princ)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2015-8-13 21:16:36 | 显示全部楼层
本帖最后由 llsheng_73 于 2015-8-13 22:29 编辑
feng83 发表于 2015-8-12 22:12
写得不是很清楚,不知道下面的效果是不是你要的

(defun c:tqzb (/)


估计理解错了楼主的意思
按楼主的说法是希望点一条线,然后输入这条线的里程
然后文件里边在原来输出数据基础上,每一个开始都写上刚才输入的那个数值

文件名以里程来命名

这样楼主或者他的同事才知道哪个文件是哪条断面,所以文件中里程位置是同一个,不需要进行计数

另外这种断面数据文件一般都会有专门的断面绘制程序来处理,所以数据格式及内容都得严格按程序所规定的来
发表于 2015-8-13 21:39:14 | 显示全部楼层
llsheng_73 发表于 2015-8-13 21:16
估计理解错了楼主的意思
按楼主的说法是希望点一条线,然后输入这条线的里程
然后文件里边在原来输出 ...

[em0][em0]还是不明白,,,什么叫里程,量程什么的
发表于 2015-8-13 21:48:39 | 显示全部楼层
楼主把要表达的意思说明白点啊,这里面很多人不是从事你那个行业的,都不明白你说什么,如果说不清,可以上张图表达一下,你想要得到的效果[em0][em0]
发表于 2015-8-13 22:30:38 | 显示全部楼层
feng83 发表于 2015-8-13 21:39
还是不明白,,,什么叫里程,量程什么的

打字打错了回去我问下是哪个手指乱打的。。。。。
发表于 2015-8-14 18:39:57 | 显示全部楼层
llsheng_73 发表于 2015-8-13 22:30
打字打错了回去我问下是哪个手指乱打的。。。。。

呵呵,,,,
 楼主| 发表于 2015-8-25 13:44:45 | 显示全部楼层
谢谢各位大侠的帮助,怪我没说的清楚,这个lisp启动后需要输入保存的文件名 这个文件名就输成里程桩号,然后输出的数据前面就添加这个固定的里程桩号。如下图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2015-8-25 20:58:17 | 显示全部楼层
本帖最后由 feng83 于 2015-8-25 21:00 编辑
snight523 发表于 2015-8-25 13:44
谢谢各位大侠的帮助,怪我没说的清楚,这个lisp启动后需要输入保存的文件名 这个文件名就输成里程桩号,然后 ...

里程桩号是多线段的长度还是什么?
你的文件名是1206,前面固定的里程桩号是150?
你给一个要导出的CAD图档,然后指明要导出哪个,然后附上一个你想要的结果,这样大家即使看不懂你说的,也可以从图形中找答案的[em0]
发表于 2015-8-26 09:16:56 | 显示全部楼层
snight523 发表于 2015-8-25 13:44
谢谢各位大侠的帮助,怪我没说的清楚,这个lisp启动后需要输入保存的文件名 这个文件名就输成里程桩号,然后 ...

我也觉得你没说清楚。你应该上2张图,1张是现在的图。另1张是你希望改造后的效果图。

2个对比就能看清楚了。否则光说专业术语,听不懂。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-21 09:42 , Processed in 0.188588 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表