明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5183|回复: 4

[求助]编一个将鸿业市政的横断面数据格式转化为EICAD横断面数据格式的文件

[复制链接]
发表于 2008-8-15 15:41 | 显示全部楼层 |阅读模式
编一个将鸿业市政的横断面数据格式转化为EICAD横断面数据格式的程序
处理前的数据格式(鸿业市政的横断面数据格式)
k0+000
-23.544 275
-17.314 274.44
-14.413 269.46
-0.612 269.14
1.803 270
15.63 267.5
25.78 265
27.829 264.10
k0+040
-4.923 277.5
-0.891 275
4.333 272.5
10.768 270
20.108 267.5
28.327 265
36.504 263.50
k0+080
-10.346 280
-5.852 277.65
5.158 272.5
9.184 271.05
10.536 270.06
13.84 270.06
16.233 269.82
22.324 267.42
k0+120
-15.9 288.12
-15.165 282.09
-7.673 279.65
1.259 276.90
5.174 275.72
14.629 272.15
21.906 269.83
28.575 267.11
29.182 267.11
30.203 265.87
35.612 265.87
36.55 264.32
k0+160
-9.376 282.5
-0.886 288.10
5.985 278.50
10.484 277.63
16.951 275.53
k0+180.24
-27.743 292.5
-23.042 290
-17.465 287.5
-10.391 285
-3.614 282.5
2.269 280
9.464 277.5
16.13 275
处理后的数据格式(EICAD横断面数据格式)0
-27.743 292.5 -23.042 290 -17.465 287.5 -10.391 285 -3.614 282.5
2.269 280 9.464 277.5 16.13 275
40
-9.376 282.5 -0.886 288.1
5.985 278.5 10.484 277.63 16.951 275.53
80
-15.9 288.12 -15.165 282.09 -7.673
279.65 1.259 276.9 5.174 275.72 14.629 272.15 21.906 269.83 28.575 267.11 29.182 267.11 30.203 265.87 35.612 265.87 36.55 264.32
120
-10.346 280 -5.852 277.65
5.158 272.5 9.184 271.05 10.536 270.06 13.84 270.06 16.233 269.82 22.324 267.42
160
-4.923 277.5 -0.891 275
4.333 272.5 10.768 270 20.108 267.5 28.327 265 36.504 263.5
180.24
-23.544 275 -17.314 274.44 -14.413 269.46 -0.612 269.14
0.728 269.2 1.803 270 15.63 267.5 25.78 265 27.829 264.1
说明
1 桩号
将K0+060、K1+060,K1+064.325等形式的数据格式转化成纯粹的数据格式,依次为。60。1060。1064.325
就是将数据中的非数字字符(如K,+)删除,并取从左边第一个非0的数字后的数字,并单独写在一行
2 两桩号之间的各行
将两个桩号之间的各行第一个数字为负数的各行放置于一行,(第一个数字为负数的各行之间可能夹杂有
第一个数字为正数的行)
将两个桩号之间的各行第一个数字为正数的各行放置于一行,(第一个数字为正数的各行之间可能夹杂有
第一个数字为负数的行)

本帖子中包含更多资源

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

x
发表于 2008-8-16 15:03 | 显示全部楼层
  1. (defun c:fd(/ DATA DATA0 DIMZIN FPATH SDATA SFID SFILE SFNAME TFID TFNAME TMP )
  2.   ;源文件
  3.   (if (setq sfile (getfiled "选择要源文件" "" "txt" 0))
  4.     (progn
  5.       ;提取路径
  6.       (setq fpath (vl-filename-directory sfile)
  7.      ;源文件名
  8.      sfname (vl-filename-base sfile)
  9.      ;目标文件名
  10.      tfname (strcat sfname "(1)")
  11.      ;打开源文件
  12.      sfid (open sfile "r")
  13.      ;打开目标文件
  14.      tfid (open (strcat fpath "\" tfname ".txt") "W")
  15.      ;初始化变量
  16.      sdata '()
  17.      tmp '()
  18.      )
  19.       
  20.       ;读取数据
  21.       (while (setq data0 (read-line sfid))
  22. ;转化成表
  23. (setq data (read (strcat "(" data0 ")")))
  24. ;添加入数据表中
  25. (if (= (length data) 1)(setq sdata (append sdata (list tmp)) tmp (list data0))(setq tmp (append tmp (list data))))
  26. )
  27.       ;剔除第一个错误数据
  28.       (setq sdata (cdr sdata))
  29.       ;添加最后一段数据
  30.       (setq sdata (append sdata (list tmp)))
  31.       ;修改系统变量
  32.       (setq dimzin (getvar "DIMZIN"))
  33.       (setvar "DIMZIN" 12)
  34.       ;数据处理并写入
  35.       (mapcar '(lambda(X / tmp1 tmpstr1 tmpstr2)
  36.    ;写入标段
  37.    (setq tmp1 '())
  38.    (mapcar '(lambda(Y)
  39.        (if (and (> Y 45) (< Y 57)) (setq tmp1 (append tmp1 (list Y))))
  40.        )
  41.     (vl-string->list (car x))
  42.     )
  43.    (princ (strcat (rtos (atof (vl-list->string tmp1))) "\n") tfid)
  44.    ;筛选正负值
  45.    (setq tmpstr1 "" tmpstr2 "")
  46.    (mapcar '(lambda(Y)
  47.        (if (>= (car Y) 0)
  48.          (setq tmpstr1 (strcat tmpstr1 " " (rtos (car Y)) " " (rtos (cadr Y))))
  49.          (setq tmpstr2 (strcat tmpstr2 " " (rtos (abs (car Y))) " " (rtos (cadr Y))))
  50.          )
  51.        )
  52.     (cdr x)
  53.     )
  54.    ;写入负值
  55.    (princ (strcat (substr tmpstr2 2) "\n") tfid)
  56.    ;写入正值
  57.    (princ (strcat (substr tmpstr1 2) "\n") tfid)
  58.    
  59.    )
  60.       
  61.        sdata
  62.       
  63.        )
  64.       ;恢复系统变量
  65.       (setvar "DIMZIN" dimzin)
  66.       ;关闭源文件
  67.       (close sfid)
  68.       ;关闭目标文件
  69.       (close tfid)
  70.       
  71.       )
  72.     )
  73.   ;well,good job boy!
  74.   (princ)
  75.   
  76.   )   
  77.      
  78.       
  79.   
  80.   
发表于 2008-8-18 12:59 | 显示全部楼层
两种格式可以相互转换就好了
发表于 2017-12-31 18:41 | 显示全部楼层

这个文本代码总是打不开,有没有完整版的呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-17 06:17 , Processed in 0.233626 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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