yxh1202 发表于 2014-10-30 09:01:04

恢复断面的原始高程数据,求指点

我是一个工程师,主要进行工程方面的计量。通过原始断面计算工程量。有时候遇到一个问题:横断面有图,但是想核查横断面和原始数据是否一致,需要逐个检查横断面的点数据,如下图:

yxh1202 发表于 2014-10-30 09:11:51

恢复原始断面地面点高程数据到txt文件中

本帖最后由 yxh1202 于 2014-10-30 09:15 编辑

我是一个工程师,主要进行工程方面的计量。通过原始断面计算工程量。有时候遇到一个问题:横断面有图,但是想核查横断面和原始数据是否一致,需要逐个检查横断面的点数据,如下图:

需要把黄线(地面线)的逐个顶点的高程(Y坐标)恢复出来,以便对比。每个断面有个原始高程。用论坛里面的帖子职能提取出来地面线个点的x,y坐标。其中Y坐标是相对于0,0点的,我想要的是根据断面上标注的那个点得数据,求出每个点得原始高程(绝对值)

liuxu042 发表于 2014-10-30 10:54:55

定制可以联系我 qq:379539186

yxh1202 发表于 2014-10-30 11:41:13

liuxu042 发表于 2014-10-30 10:54 static/image/common/back.gif
定制可以联系我 qq:379539186

你好,公开征集的

yxh1202 发表于 2014-10-31 14:27:03

弄了个代码,提取的坐标位数较小时候可以,但是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
    )
)
)



zbwei120 发表于 2014-11-19 09:55:13

你监理工程师的吧,提取后在excel表格比较 好对比的

f4800 发表于 2020-11-2 05:56:37

楼主程序弄好了么?能分享下么?多谢。。

ssyfeng 发表于 2020-11-2 15:45:33

图都打不开
页: [1]
查看完整版本: 恢复断面的原始高程数据,求指点