设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 591|回复: 10

[源码] 纬地数据转成飞时达数据格式

[复制链接]

已领礼包: 548个

财富等级: 财运亨通

发表于 2016-10-31 15:03:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
(princ "\n程序--------纬地数据转换为飞时达数据")
(princ "\n------------------------------------")
(princ "\n-----------命令:zh   ---------------")
(defun c:zh ()
  (setq os (getvar "osmode")
om (getvar "cmdecho")
  )
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (if (not file-path)
    (setq file-path "d:\\mtools")
  )
  (setq filename1
  (getfiled
    "请选择纬地地面线数据文件:"
    (strcat file-path "\\")
    "dmx"
    8
  )
  )
  (setq file-path (vl-filename-directory filename1))
  (setq filename2
  (getfiled
    "请选择纬地横断面数据文件:"
    (strcat file-path "\\")
    "hdm"
    8
  )
  )
  (setq
    filename3 (strcat file-path
        "\\"
        (vl-filename-base filename1)
        ".zdx"
       )
  )
  (setq
    filename4 (strcat file-path
        "\\"
        (vl-filename-base filename2)
        ".hdx"
       )
  )
  (setq file1 (open filename1 "r")
file2 (open filename2 "r")
file3 (open filename3 "w")
file4 (open filename4 "w")
  )
  (setq i 0
j 0
dmx-list '()
hdm-list '()
  )
  (read-line file1)
  (while (setq readline1 (read-line file1))
    (progn
      (setq ele1 (read (strcat "(" readline1 ")")))
      (setq dmx-list (cons ele1 dmx-list))
    )
  )
  (setq dmx-list (reverse dmx-list))
  (setq ttt t)
  (while ttt
    (progn
      (setq hdm-list1 '())
      (if (read-line file2)
(setq ttt t)
(setq ttt nil)
      )
      (repeat 3
(progn
   (setq readline2 (read-line file2))
   (if readline2
     (progn
       (setq ttt t)
       (setq ele2 (read (strcat "(" readline2 ")")))
       (setq hdm-list1 (cons ele2 hdm-list1))
     )
     (setq ttt nil)
   )
)
      )
      (setq hdm-list1 (reverse hdm-list1))
      (if (not (eq hdm-list1 '()))
(setq hdm-list (cons hdm-list1 hdm-list))
      )
    )
  )
  (setq hdm-list (reverse hdm-list))
;;;生成飞时达纵断文件
  (setq num_dmx (length dmx-list)
i 0
j 0
k 0
  )
  (princ num_dmx file3)
  (princ "\n" file3)
  (repeat num_dmx
    (setq dmx_no_i (nth i dmx-list))
    (princ (car dmx_no_i) file3)
    (princ "\t" file3)
    (princ (cadr dmx_no_i) file3)
    (princ "\n" file3)
    (setq i (+ i 1))
  )
;;;生成飞时达横断面地面线数据
  (setq num_hdm (length hdm-list)
i 0
  )
  (princ num_hdm file4)
  (princ "\n" file4)
  (repeat num_hdm
    (setq hdm_i (nth i hdm-list))
    (setq hdm_zh (car (car hdm_i)))
    (princ hdm_zh file4)
    (princ "\n" file4)
    (setq left_hdm (cadr hdm_i)
   rigth_hdm (caddr hdm_i))
   
    (setq left_num(/ (- (length left_hdm) 1) 2)
   rigth_num(/ (- (length rigth_hdm) 1) 2))
    (princ (+ left_num 1) file4)
    (princ "\t" file4)
    (princ (+ rigth_num 1) file4)
    (princ "\n" file4)
    (setq zggc_zh(cadr (assoc hdm_zh dmx-list)))
;;;    (setq zggc_zh 0)
    (princ "0" file4)
    (princ "\t" file4)
    (princ zggc_zh file4)
    (princ "\n" file4)
    (setq j 0)   
    (repeat left_num
      (setq juli1(nth (+ (* 2 j) 1) left_hdm)
     gc1(+ (nth (+ (* 2 j) 2) left_hdm) zggc_zh))
      (princ juli1 file4)
      (princ "\t" file4)
      (princ gc1 file4)
      (princ "\n" file4)
      (setq j (+ j 1))
      )
    (princ "0" file4)
    (princ "\t" file4)
    (princ zggc_zh file4)
    (princ "\n" file4)
    (setq k 0)   
    (repeat rigth_num
      (setq juli2(nth (+ (* 2 k) 1) rigth_hdm)
     gc2(+ (nth (+ (* 2 k) 2) rigth_hdm) zggc_zh))
      (princ juli2 file4)
      (princ "\t" file4)
      (princ gc2 file4)
      (princ "\n" file4)
      (setq k (+ k 1))
      )   
    (setq i (+ i 1))
  )
  (close file1)
  (close file2)
  (close file3)
  (close file4)
  (setvar "osmode" os)
  (setvar "cmdecho" om)
  (print "OK!")
  (princ)
)

评分

参与人数 1D豆 +6 收起 理由
LoveArx + 6 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 548个

财富等级: 财运亨通

 楼主| 发表于 2016-10-31 15:18:53 | 显示全部楼层
谢谢,这也是工作中遇到时写的。

点评

大师,有个cass横断面数据,能不能通过lisp转换为 纬地hdm数据啊? cass数据 BEGIN,0.000:1 -25.000,4.100 -20.000,4.135 -15.000,4.388 -10.000,4.779 -5.000,5.170 0.000,5.561 5.000,5.951 10.000,6.  详情 回复 发表于 7 天前
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7312个

财富等级: 富甲天下

发表于 2016-11-1 06:48:24 | 显示全部楼层

感谢您分享程序,您有数据文件可供测试吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3178个

财富等级: 富可敌国

发表于 2016-11-1 07:21:04 | 显示全部楼层
学习加应用,收获颇多
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 548个

财富等级: 财运亨通

 楼主| 发表于 2016-12-31 22:39:29 | 显示全部楼层
没找到附件在那里挂,可以QQ我,315816800
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6466个

财富等级: 富甲天下

发表于 2017-1-16 23:45:08 | 显示全部楼层
代码不全吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 548个

财富等级: 财运亨通

 楼主| 发表于 2018-5-4 22:49:38 | 显示全部楼层
才看到大家要测试数据,我现在上传一下.

飞时达.zip

114.04 KB, 下载次数: 8, 下载积分: D豆 -1 , 活跃度 1

售价: 2 D豆  [记录]

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 548个

财富等级: 财运亨通

 楼主| 发表于 2018-5-4 22:51:17 | 显示全部楼层
代码是全的啊。你们可以用测试数据试

点评

你好楼主 有没有 cass 断面数据转换为 纬地 横断面数据的 lsp 啊, 测绘单位提供的很多都是 cass格式的 多谢了 。。  详情 回复 发表于 7 天前
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 7 天前 | 显示全部楼层
王子 发表于 2018-5-4 22:51
代码是全的啊。你们可以用测试数据试

你好楼主   有没有  cass  断面数据转换为   纬地 横断面数据的 lsp 啊,  测绘单位提供的很多都是 cass格式的

多谢了 。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 7 天前 | 显示全部楼层
王子 发表于 2016-10-31 15:18
谢谢,这也是工作中遇到时写的。

大师,有个cass横断面数据,能不能通过lisp转换为 纬地hdm数据啊?

cass数据
BEGIN,0.000:1
-25.000,4.100
-20.000,4.135
-15.000,4.388
-10.000,4.779
-5.000,5.170
0.000,5.561
5.000,5.951
10.000,6.421
15.000,7.104
20.000,7.198
25.000,7.191
BEGIN,25.000:2
-25.000,3.879
-20.000,4.270
-15.000,4.661
-10.000,5.052
-5.000,5.443
0.000,5.833
5.000,6.224
10.000,6.827
15.000,6.922
20.000,6.915
25.000,6.905

纬地数据(前面的那组数据表示本组的数据组数)
0.000
5            5            -0.39            5            -0.39            5            -0.39            5            -0.25            5            -0.04
5            5            0.39            5            0.47            5            0.68            5            0.09            5            -0.01
25.000
5            5            -0.39            5            -0.39            5            -0.39            5            -0.39            5            -0.39
5            5            0.39            5            0.6            5            0.09            5            -0.01            5            -0.01
50.000
5            5            -0.39            5            -0.39            5            -0.39            5            -0.39            5            -0.21
5            5            0.45            5            0.09            5            -0.01            5            -0.01            5            -0.01
75.000
5            5            0.65            5            1.25            5            0.34            5            -0.13            5            -0.11
5            5            0.32            5            0.23            5            0.67            5            0.76            5            0.51
100.000
5            5            -0.26            5            1.38            5            0.34            5            0.41            5            0.04
5            5            0.26            5            0.26            5            0.26            5            0.26            5            0.2
125.000
5            5            -0.16            5            -0.15            5            0.59            5            0.23            5            0.23
5            5            0.15            5            0.16            5            0.16            5            0.16            5            0.18
150.000
5            5            -0.77            5            1.91            5            0.25            5            0.03            5            0.05
5            5            0.77            5            0.77            5            0.77            5            0.76            5            -0.01
175.000
5            5            -0.13            5            0.46            5            0.28            5            0.01            5            0
5            5            0.16            5            0.16            5            0.16            5            0.58            5            0.15


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 548个

财富等级: 财运亨通

 楼主| 发表于 4 天前 | 显示全部楼层
楼上的,当然可以编了。只要知道CASS数据代表啥,就可以编
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

GMT+8, 2020-8-9 13:39 , Processed in 0.211260 second(s), 78 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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