恢复断面的原始高程数据,求指点
我是一个工程师,主要进行工程方面的计量。通过原始断面计算工程量。有时候遇到一个问题:横断面有图,但是想核查横断面和原始数据是否一致,需要逐个检查横断面的点数据,如下图:恢复原始断面地面点高程数据到txt文件中
本帖最后由 yxh1202 于 2014-10-30 09:15 编辑我是一个工程师,主要进行工程方面的计量。通过原始断面计算工程量。有时候遇到一个问题:横断面有图,但是想核查横断面和原始数据是否一致,需要逐个检查横断面的点数据,如下图:
需要把黄线(地面线)的逐个顶点的高程(Y坐标)恢复出来,以便对比。每个断面有个原始高程。用论坛里面的帖子职能提取出来地面线个点的x,y坐标。其中Y坐标是相对于0,0点的,我想要的是根据断面上标注的那个点得数据,求出每个点得原始高程(绝对值) 定制可以联系我 qq:379539186 liuxu042 发表于 2014-10-30 10:54 static/image/common/back.gif
定制可以联系我 qq:379539186
你好,公开征集的
弄了个代码,提取的坐标位数较小时候可以,但是Y值在3636456.72这一类就不行了,请指点:
;;;错误处理,按<ESC>处理--程序静静取消。
;;;-----------------------------------
(defun *error* (s)
(if (/= s "函数已取消")
(princ (strcat "\n错误: " s))
)
(princ)
)
(defun c:zbtt ()
(setvar "osmode" 0)
(princ)
(setq dc_file (getfiled "选择点坐标文件" "" "txt" 1))
(setq ss1(entsel "请选择地面高程:")
ss (car ss1)
LST1 (entget ss)
sz (cdr (assoc 1 lst1))
)
(setq xytxt (open dc_file "a"))
(setq xy_list '())
;;(prompt "\n.\n.\n.\n>>>>>>>>>>选择多段线:")
(setq xy_list (MJ:Massoc
10
(entget (car (entsel "\n.\n.\n.\n>>>>>>>>>>选择多段线:")))
)
k (length xy_list)
d k
h0 (nth 0 (tt xy_list))
gcha (- (atof sz) (cadr h0))
)
(write-line "点号,X坐标,Y坐标" xytxt)
(repeat k
(setq a (nth (- k dh) (tt xy_list)))
(setq pt_list (strcat (rtos (- k dh) 2 1)
","
(rtos (car a) 2 3)
","
(rtos (+ gcha (cadr a)) 2 3)
)
)
(write-line pt_list xytxt)
(setq dh (- dh 1))
)
(write-line "----------END----------" xytxt)
(close xytxt)
)
(defun tt (lst)
(vl-sort lst '(lambda (x y) (< (car x) (car y))))
)
;;46.1 [功能] 多段线各顶点(见99.3)
;;示例 (MJ:Massoc 10 (entget (car (entsel))))
;; Notes:特别适合多段线各顶点
(defun MJ:Massoc (key alist)
(apply
'append
(mapcar '(lambda (x)
(if (eq (car x) key)
(list (cdr x))
)
)
alist
)
)
)
你监理工程师的吧,提取后在excel表格比较 好对比的 楼主程序弄好了么?能分享下么?多谢。。 图都打不开
页:
[1]