明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3316|回复: 3

[求助]编一个将鸿业市政的横断面数据格式转化为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 | 显示全部楼层
[code="lisp] (defun c:fd(/ DATA DATA0 DIMZIN FPATH SDATA SFID SFILE SFNAME TFID TFNAME TMP )   ;源文件   (if (setq sfile (getfiled "选择要源文件" "" "txt" 0))     (progn       ;提取路径       (setq fpath (vl-filename-directory sfile)      ;源文件名      sfname (vl-filename-base sfile)      ;目标文件名      tfname (strcat sfname "(1)")      ;打开源文件      sfid (open sfile "r")      ;打开目标文件      tfid (open (strcat fpath "\" tfname ".txt") "W")      ;初始化变量      sdata '()      tmp '()      )              ;读取数据       (while (setq data0 (read-line sfid)) ;转化成表 (setq data (read (strcat "(" data0 ")"))) ;添加入数据表中 (if (= (length data) 1)(setq sdata (append sdata (list tmp)) tmp (list data0))(setq tmp (append tmp (list data)))) )       ;剔除第一个错误数据       (setq sdata (cdr sdata))       ;添加最后一段数据       (setq sdata (append sdata (list tmp)))       ;修改系统变量       (setq dimzin (getvar "DIMZIN"))       (setvar "DIMZIN" 12)       ;数据处理并写入       (mapcar '(lambda(X / tmp1 tmpstr1 tmpstr2)    ;写入标段    (setq tmp1 '())    (mapcar '(lambda(Y)        (if (and (> Y 45) (< Y 57)) (setq tmp1 (append tmp1 (list Y))))        )     (vl-string->list (car x))     )    (princ (strcat (rtos (atof (vl-list->string tmp1))) "\n") tfid)    ;筛选正负值    (setq tmpstr1 "" tmpstr2 "")    (mapcar '(lambda(Y)        (if (>= (car Y) 0)          (setq tmpstr1 (strcat tmpstr1 " " (rtos (car Y)) " " (rtos (cadr Y))))          (setq tmpstr2 (strcat tmpstr2 " " (rtos (abs (car Y))) " " (rtos (cadr Y))))          )        )     (cdr x)     )    ;写入负值    (princ (strcat (substr tmpstr2 2) "\n") tfid)    ;写入正值    (princ (strcat (substr tmpstr1 2) "\n") tfid)        )               sdata               )       ;恢复系统变量       (setvar "DIMZIN" dimzin)       ;关闭源文件       (close sfid)       ;关闭目标文件       (close tfid)              )     )   ;well,good job boy!   (princ)      )                      [/code]
发表于 2008-8-18 12:59 | 显示全部楼层
两种格式可以相互转换就好了
发表于 2017-12-31 18:41 | 显示全部楼层

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

本版积分规则

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

GMT+8, 2018-10-18 01:06 , Processed in 0.165210 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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