明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 树櫴希德

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

[复制链接]
 楼主| 发表于 2014-5-5 22:32:22 | 显示全部楼层
如图所示:有人用LISP解决吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-5-5 22:51:59 | 显示全部楼层
本帖最后由 gzxl 于 2014-5-5 22:53 编辑

由数据生成图形,还是图形生成数据?


抱歉,我应该多此一问了,没看标题
 楼主| 发表于 2014-5-6 09:13:25 | 显示全部楼层
大侠们都来想想办法吧
 楼主| 发表于 2014-5-6 17:50:03 | 显示全部楼层
73哥程序(defun SstoEs(ss / a en lst)
  (if ss(progn(setq a -1)
(while(setq en(ssname ss(setq a(1+ a))))
   (setq lst(cons en lst)))))
  lst)
(defun subtotals(lst m ns / myfun a b c);;对lst以子表第m项为关键字进行分类,ns为整数时记录第ns项、为表(2 3)记录表中指定的项、为空记录关键字以外所有项
  (cond((=(type ns)'LIST)(defun myfun(x)(list(mapcar'(lambda(y)(nth y x))ns))))
       ((=(type ns)'INT)(defun myfun(x)(LIST(NTH ns x))))
       (t(defun myfun(x)(list(vl-remove c x)))))
  (foreach x lst
    (setq a(if(setq c(nth m x)b(assoc c a))
       (subst(append b(myfun x))b a)
       (append a(list(append(list c)(myfun x))))))))
(defun c:tt1()
  (setq blc (getint "\n请输入比例尺1:"))
  (setvar 'userr1 blc);设置比例尺
; (setq zg(* 0.002 blc));字高
  (setq scale (* 0.001 blc));缩放比例
  (foreach x(vl-remove-if'(LAMBDA(x)(<(length x)3))(SUBTOTALS(mapcar'(lambda(x)(setq p(cdr(assoc 10(entget x))))
       (list(list(car p)(cadr p))(last p)))(sstoes(ssget"X"'((8 . "GCD")))))0 1))
    (gxl-cs:gcd x scale))
  (princ)
  )
;;by Gu_xl
(defun gxl-cs:gcd (inspt scale / pt blkdef obj);展高程点函数(inspt:((x y)h1 h2)),scale:缩放比例)
  (setvar "CMDECHO" 0)
  (command "layer" "m" "GCD" "c" "1" "" "L" "CONTINUOUS" ""  "")
  (regapp "SOUTH")
  ;;;检查字体 "HZ" 是否存在
  (if(not(tblobjname "style" "HZ"))(command "style" "HZ" "rs.shx,hztxt.shx" 0 1 0 "" "" ""))
  ;;;检查是否存在高程点图块定义
  (if(not(tblobjname "block" "GC200"))
    (progn
      (setq obj
        (vla-AddPolyline
           (vla-Add(vla-get-Blocks(vla-get-ActiveDocument(vlax-get-acad-object)))(vlax-3D-point '(0 0 0)) "GC200")
   (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)))
  ;;;插入块
  (entmake (list
             '(0 . "INSERT")
             '(100 . "AcDbEntity")
             '(100 . "AcDbBlockReference")
             '(66 . 1);;;属性跟随标志,1跟随,0不跟随
              '(2 . "GC200")
              (cons 10(setq pt(append(car inspt)(list(cadr inspt)))))
              (cons 41 scale)
              (cons 42 scale)
              (cons 43 scale)
              (list -3 '("SOUTH" (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 (rtos(cadr inspt)2 3))
              (cons 7 "HZ")
              (cons 72 0)
              (cons 11 pt)
              '(100 . "AcDbAttribute")
              (cons 2 "height1")
              (cons 70  0)
              (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 (rtos(last inspt)2 3))
              (cons 7 "HZ")
              (cons 72 0)
              (cons 11 pt)
              '(100 . "AcDbAttribute")
              (cons 2 "height2")
              (cons 70  0)
              (cons 74 3)
           ))
  (entmake (list
             '(0 . "ATTRIB")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
     (cons 62 3)
              (cons 10 (setq pt(polar(car inspt)pi(* 1.2 scale))))
              (cons 40 (* 2.0 scale))
              (cons 50 0)
              (cons 41 0.8)
              (cons 51 0)
              (cons 1 (rtos(-(cadr inspt)(last inspt))2 3))
              (cons 7 "HZ")
              (cons 72 2)
      (cons 73 2)
              (cons 11 pt)
              '(100 . "AcDbAttribute")
              (cons 2 "height2")
              (cons 70  0)
              (cons 74 2)
           ))
   ;;;结束标志
   (entmake '((0 . "SEQEND")))
   (princ)
)
 楼主| 发表于 2014-5-6 17:51:51 | 显示全部楼层
是根据DTM文件DTMTF.LOG文件正反算出来的
树櫴希德 15:09:07
三角网空间相交,形成三棱柱或者三棱锥
计算公式为v=(H1+H2+H3)/3*S
树櫴希德 15:10:19
两次各测各的,各自形成三角网
树櫴希德 15:10:27
然后叠加
树櫴希德 15:10:54
这是CASS计算土方的思路
树櫴希德 15:11:08
很精准
树櫴希德 15:11:16
就是没有计算过程
树櫴希德 15:11:38
我要把它弄得跟方格网一样
树櫴希德 15:11:45
让甲方看懂
树櫴希德 15:12:06
让他们手算可以验证
 楼主| 发表于 2014-5-6 18:01:49 | 显示全部楼层
  野外数据通过南方测绘CASS7.0系统传输到计算机中,采用南方测绘CASS7.0系统中的构造三角网法(即建立数字地面模型):利用开挖前、开挖后坐标高程数据分别生成三角网时手工选择画好的地形特征线,删除边界以外的三角形,检查有无高程点没有参加三角形组网,检查有无因为程序漏洞引起的三角形穿越地形特征线情况,对三角网内三角形进行必要的增加和删除,使之更加符合实际地形情况,然后将检查无误的三角网导出三角网文件(*.SJW)。再利用软件DTM法土方计算中的计算两期间土方功能,根据开挖前、开挖后的三角网文件,在CAD中把两期三角网模型进行叠加,把两期三角网空间相交的线作为开挖零界线,分解出若干个三棱柱和三棱锥,后分别计算出每个三棱柱和三棱锥体积并加以统计,高于原地面的三棱柱和三棱锥体积为填方,低于原地面的三棱柱和三棱锥体积为挖方,三棱柱或者三棱锥体积公式为V=(H1+H2+H3)/3×S。其中H1、H2、H3为三角高度,要么均≥0、要么均≤0,S为投影面积,V为体积。上述计算过程及方法严格遵守了国家标准《城市测量规范CJJ T8-2011》中9.8章土石方测量中的详细规定。南方CASS是由广东南方数码科技公司在CAD基础上研发,其开发者是由武汉测绘科技大学专家教授组成,CASS地形地籍成图软件经过十几年的稳定发展,市场和技术十分成熟,用户遍及全国各地,涵盖了测绘、国土、规划、市政、环保、地质、交通、水利、电力、矿山及相关行业;软件销量超过25000套,市场占有率遥遥领先,已经成长为业内应用最广、服务最好的软件品牌,其DTM两期间土方计算法 通过美国AUTODESK公司开发的AutoCAD  Civil 3D 软件中土方功能计算验证,利用南方CASS和 AutoCAD  Civil 3D用同样图形数据计算结果误差为0,是可靠和精准的计算方法。
发表于 2014-5-6 22:14:03 | 显示全部楼层
1、CASS在两期三角网叠加形成计算用的新三角网时,其解算时而会出现错误。
2、同样的数据,CASS生成的三角网与Civil 3D的不完全相同。CASS两期间DTM法计算出的数量与Civil 3D界内体积也不尽相同。
发表于 2014-5-6 22:27:20 | 显示全部楼层
CASS生成的DTMTF.LOG文件中,每个三角形各顶点只给出了第一期的高程,第二期的如不是实测点,则无高程值,此时需要利用第二期的数据,采用双线性插值法来计算出高程。根据两期高程有下述多种情况:
1、三角全挖  2、三角全填  3、一角挖其它两角填  4、二角挖另一角填  5、一角填其它两角挖  6、二角填另一角挖  7、一角不挖不填另两角填或挖  8、二角不挖不填另一角填或挖  9、三角均不挖不填  ......
 楼主| 发表于 2014-5-7 20:33:32 | 显示全部楼层
所以要用三角网文件反算 ,得出破网计算后每个三角形各顶点第二期的高程,与第一期整合。
 楼主| 发表于 2014-5-7 20:36:33 | 显示全部楼层
生成三角网处理坡坎方面,网中每一个三角形只能是坡顶线上相邻两点连接坡脚线上对应一点,或者是坡脚线相邻两点连接坡顶线上对应一点,才不会失真与地形模型。不管软件是CASS还是CIVLL 3D 2012
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 01:33 , Processed in 0.161684 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表