树櫴希德 发表于 2014-5-5 20:56:59

生成重合或最近点高差坐标文件(红色-绿色)

如何生成重合点高差坐标文件(红色-绿色),或者转换成增强属性快,如图:

树櫴希德 发表于 2023-8-20 16:13:33

721.163,,221379.262,53977.810,5.529,5.220,0.309
721.164,,221374.790,53987.740,5.629,5.220,0.409
721.165,,221367.996,53989.463,5.750,5.220,0.530
721.166,,221365.112,53994.742,5.664,5.220,0.444
721.167,,221360.353,53989.567,5.779,5.220,0.559
721.168,,221357.032,53993.537,5.679,5.220,0.459
721.169,,221352.605,53991.569,5.558,5.220,0.338
721.170,,221358.207,53983.844,5.820,5.220,0.600
721.171,,221350.822,53980.183,5.679,5.220,0.459
721.172,,221351.556,53971.801,5.847,5.220,0.627
721.173,,221346.575,53964.486,5.666,5.220,0.446
721.174,,221337.767,53961.983,5.732,5.220,0.512
721.175,,221337.048,53961.640,5.752,5.220,0.532
721.176,,221330.348,53965.111,5.680,5.220,0.460
721.177,,221334.548,53966.549,5.707,5.220,0.487
721.178,,221347.084,53961.034,5.570,5.220,0.350
721.179,,221351.271,53955.535,5.646,5.220,0.426
721.180,,221358.610,53951.355,5.503,5.220,0.283
721.181,,221361.237,53950.476,5.671,5.220,0.451
(defun String:Split (str delimiter / post strlst stl)
    (if      str
      (progn
      (setq stl (strlen delimiter))
      (while (vl-string-search delimiter str)
          (setq      post   (vl-string-search delimiter str)
                strlst (cons (substr str 1 post) strlst)
                str    (substr str (+ 1 post stl))
          )
      )
      (reverse (vl-remove "" (cons str strlst)))
      )
    )
)
;;;;;;;;;

;;by Gu_xl
(defun gxl-cs:gcd (inspt scale / pt blkdef obj height height1 height2);展高程点函数(inspt:((x y)h1 h2)),scale:缩放比例)
(setvar "CMDECHO" 0)

(regapp "PSOUTH")
;;;检查字体 "HZ" 是否存在
(if(not(tblobjname "style" "HZ"))(command "style" "HZ" "rs.shx,gbcbig.shx" 0 1 0 "" "" ""))
;;;检查是否存在高程点图块定义
(if(not(tblobjname "block" "GC2000"))
    (progn
      (setq obj
      (vla-AddPolyline
         (vla-Add(vla-get-Blocks(vla-get-ActiveDocument(vlax-get-acad-object)))(vlax-3D-point '(0 0 0)) "GC2000")
   (vlax-make-variant(vlax-safearray-fill(vlax-make-safearray vlax-vbdouble (cons 0 5))'(-0.2 0 0 0.2 0 0)))))
      (vla-SetBulge obj 0 1)(vla-SetBulge obj 1 1)
      (vla-put-Closed obj :vlax-true)
      (vla-put-ConstantWidth obj 0.4)))
(setq height (rtos(nth 2 inspt)2 3)
      height1 (rtos(nth 3 inspt)2 3)
   height2(rtos(-(nth 2 inspt)(nth 3 inspt))2 3)

    )
;;;插入块
(entmake (list
             '(0 . "INSERT")
       '(2 . "GC2000")
             '(100 . "AcDbEntity")
             '(100 . "AcDbBlockReference")
             '(66 . 1);;;属性跟随标志,1跟随,0不跟随
            
            (cons 10(setq pt(list(car inspt)(cadr inspt) )))
            (cons 41 scale)
            (cons 42 scale)
            (cons 43 scale)
            (list -3 '("PSOUTH" (1000 . "202101")))
       )
   )
;;;插入属性
(entmake (list
             '(0 . "ATTRIB")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
      (cons 62 1)
            (cons 10 (setq pt(polar pt 0(* 1.2 scale))))
            (cons 40 (* 2.0 scale))
            (cons 50 0)
            (cons 41 0.8)
            (cons 51 0)
            (cons 1 height )
            (cons 7 "HZ")
            (cons 72 0)
            (cons 11 pt)
            '(100 . "AcDbAttribute")
            (cons 2 "height")
            (cons 700)
            (cons 74 1)
         ))
;;;;;;;;;;;;;;;;;;;;;;;;;
(entmake (list
             '(0 . "ATTRIB")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
      (cons 62 2)
            (cons 10 pt)
            (cons 40 (* 2.0 scale))
            (cons 50 0)
            (cons 41 0.8)
            (cons 51 0)
            (cons 1 height1)
            (cons 7 "HZ")
            (cons 72 0)
            (cons 11 pt)
            '(100 . "AcDbAttribute")
            (cons 2 "height1")
            (cons 700)
            (cons 74 3)
         ))
;;;;;;;;;;;;;;;;;;;;;;;;;
(entmake (list
             '(0 . "ATTRIB")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
   (cons 62 3)
            (cons 10 (setq pt(polarpt pi(* 1.5 scale))))
            (cons 40 (* 2.0 scale))
            (cons 50 0)
            (cons 41 0.8)
            (cons 51 0)
            (cons 1 height2)
            (cons 7 "HZ")
            (cons 72 2)
   ; (cons 73 2)
            (cons 11 pt)
            '(100 . "AcDbAttribute")
            (cons 2 "height2")
            (cons 700)
            (cons 74 2)
         ))
   ;;;结束标志
   (entmake '((0 . "SEQEND")))
   (princ)
)



;;;;;;;
(defun c:zgcd ( /   ) ;fn f k ll fff x
(vl-load-com)
(command "layer" "m" "jcGCD" "c" "1" "" "L" "CONTINUOUS" """")
(setq fn (getfiled "Select Log file请打开数据文件:格式为:经度,纬度" "" "txt" 8))

(setq f (open (findfile fn) "r"))

(while (setq k (read-line f))
    (setq ll (cons kll ) )
)
(close f)
;(String:Split (car ll) ",")
(foreach x ll
(setq fff   (String:Split x ","))

(gxl-cs:gcd (list (atof(nth 2 fff)) (atof(nth 1 fff))(atof(nth 3 fff)) (atof(nth 4 fff))) 0.5 )

)
(princ )
)


;(gxl-cs:gcd '(100 200 30 50)1.0)

yanshengjiang 发表于 2018-11-14 15:37:40

树櫴希德 发表于 2014-5-7 20:36
生成三角网处理坡坎方面,网中每一个三角形只能是坡顶线上相邻两点连接坡脚线上对应一点,或者是坡脚线相邻 ...

我觉得算方量最精确的算法是三角网。但用三角网直接两期算我觉得还是会增大误差。我的理论就是用两期的三角网同时算到一个平面。然后计算差值。这样就不存在你们说的双线性差值带来的烦恼了。   一个非测绘专业的十年测量员的理解,有可能有误清不要见笑。

树櫴希德 发表于 2014-5-5 21:04:33

本帖最后由 树櫴希德 于 2014-5-5 21:06 编辑

目的是想改进CASS三角网两期间土方计算显示结果,如图:

树櫴希德 发表于 2014-5-5 21:10:37

黄色为原地面标高,青色为完成面标高,红框内粉红色为填挖高度,三角形编号,面积,单个三角形方量已经搞定

树櫴希德 发表于 2014-5-5 21:15:20

用蓝图老师的面积标注程序批量标注三角形面积

llsheng_73 发表于 2014-5-5 22:02:05

其实相对于你这个问题我更好奇为什么会有两个点位一样而高程不一样的点?
挖填前后测的?那怎么保证它的坐标在同一处的?打了桩,还是第二次对第一次测的坐标进行放样?

zzyong00 发表于 2014-5-5 22:02:40

闭合多边形,有什么要求啊,根本用不了啊

llsheng_73 发表于 2014-5-5 22:04:11

一般情况只会关心挖填前后的总方量变化,有必要关心每一个三角形的变化么?这是什么行业要求这么严格的?

树櫴希德 发表于 2014-5-5 22:27:02

那是我根据CASS生成的DTMTF.LOG文件提取的,甲方需要查看每个节点填挖高度,高程等要素。CASS这方面还有待改进

树櫴希德 发表于 2014-5-5 22:29:24

上传一个增强属性快

树櫴希德 发表于 2014-5-5 22:30:41

用INSERT插入
页: [1] 2 3
查看完整版本: 生成重合或最近点高差坐标文件(红色-绿色)