13648893846 发表于 2018-10-25 23:11:14

读取纬地原始地貌数据转换成点表

;;[功能]读取纬地原始地貌数据转换成点表
;;[用法](LC:Make-LWPOLYLINE (LC:read-Weft-pts lst (setq pt (getpoint)) (setq hxbl 1000.0) (setq zxbl 1000.0)))
;;[作者]BY 老仓测绘上班记
;;;(setq txt (try-read-txt WeftFILEpath))
;;;(if (= (car txt) "HINTCAD5.83_HDM_SHUJU")
;;;    (setq txt (gxl-removeNth3 0 txt))
;;;)
;;;(setq txt (LC:devidelist txt 3))
;;;(setq dmlen (length txt));断面数量
(defun LC:read-Weft-pts (LST PT HXBL ZXBL / LC LSTLEFT LSTRIGHT PTLST I PTS PJGC P)
(setq lc (atof(car lst)))
;;;(setq lstleft (LC:devidelist (gxl-removeNth3 0 (LC:NUMStr2List (cadr lst))) 2));左
;;;(setq lstright (LC:devidelist (gxl-removeNth3 0 (LC:NUMStr2List (caddr lst))) 2));右
(setq lstleft (LC:WEFT-left1 (gxl-removeNth3 0 (LC:NUMStr2List (cadr lst)))));左偏距高差表
(setq lstright (LC:WEFT-right1 (gxl-removeNth3 0 (LC:NUMStr2List (caddr lst)))));右偏距高差表
(setq ptlst '()
ptlst (append ptlst lstleft lstright));总偏距高差表
(setq i 0 pts '())
(repeat (length ptlst)
    (setq pjgc (nth i ptlst))
    (setq p (LC:Pt2XY pt (* (car pjgc) (/ 1000.0 hxbl)) (* (cadr pjgc) (/ 1000.0 zxbl))))
    (setq pts (append pts (list p)))
    (setq i(1+ i))
)
pts
)

;;[功能]相对前点转化成相对中点左侧数据
;;[用法]
;;[作者]BY 老仓测绘上班记
(defun LC:WEFT-left1(lst / l)
(while lst
    (setq l(cons(mapcar'+(list(car lst)(cadr lst))(if l(car l)'(0 0)))l)
lst(cddr lst)))
(mapcar '(lambda(x)(list(-(car x))(cadr x)))l)
)
;;[功能]相对前点转化成相对中点右侧数据
;;[用法]
;;[作者]BY 老仓测绘上班记
(defun LC:WEFT-right1 (LST / L)
(while lst
    (setq l(cons(mapcar'+(list(car lst)(cadr lst))(if l(car l)'(0 0)))l)
lst(cddr lst)))
(reverse l)
)

spp_wall 发表于 2018-10-26 08:53:04

厉害 厉害

yanshengjiang 发表于 2018-11-12 14:01:00

同是断面人。非常感谢你分享的这个源码。我就觉得编写麻烦就没有写

f4800 发表于 2020-10-31 13:08:51

常感谢 分享的这个源码

f4800 发表于 2020-11-7 07:58:50

感谢 分享的这个源码
页: [1]
查看完整版本: 读取纬地原始地貌数据转换成点表