 - (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)
-
- )
-
-
-
-
|