树櫴希德 发表于 2022-10-21 12:34:03

如何不全部利用CASS算平场土方体积猜想


先用CASS生成的三角网,记得三角网中任何三角形都不能穿越地形特征线,要符合地形地貌
   然后用下面这个小代码将三角网(三维多段线转化成三维面3DFACE)
(defun vxs (e / i v lst)
(setq i 0)
(while
    (setq v (vlax-curve-getpointatparam e (setq i (1+ i))))
   (setq lst (cons v lst))
)
(reverse lst))
;;;;;;;;;;;;;;;

(setq ssa (ssget '((0 . "POLYLINE") (8 . "sjw"))))
                (setq ii   0
                      no0
                  )
                  (repeat (sslength ssa)
                     (setq en (ssname ssa ii)
                            ptb (vxs en)
          pzx (append pzx (list ptb))
         ii(1+ ii)               )
       ; (setq pzx (list (car pt) (cadr pt) (caddr pt)))
                     
                  )
;(write-line (strcat pzx) fff)
               ; (close fff)
                  ;(princ (strcat "\n坐标已存入"" wjm ""中"))
   
    ;(setvar "cmdecho" cm)
    (princ)


(foreach n pzx

(entmake(list '(0 . "3dface") (cons 10 (nth 0 n))
    (cons 11 (nth 1 n))
                (cons 12 (nth 2 n))
                (cons 13 (nth 0 n))
                '(8 . "0")
    '(62 . 3)
    ))


)

然后用 CONVTOSURFACE命令 将三维面3DFACE转换为曲面(平面,分散的曲面SURFACE PLANE),再用命令UNION(CAD2008不行,要高版本,2016使用可以)将分散的曲面SURFACE PLANE合并成完整的曲面SURFACE
   以标高最低点Z值画LWPOLYLINE多段线围住三角网一圈,并用拉伸命令EXTRUDE拉伸,高度为最高Z值减去最低点Z值形成三维实体3D solid
用剖切命令SLICE将三维实体剖切,选合并成完整的曲面SURFACE为参照,删除不要的剖切后实体,剩余的就是要算体积的实体
用MASSPROP命令计算实体体积完成
    这只是我的小小想法, 不足之处, 还望谅解、 指点,谢谢

gzxl 发表于 2022-10-21 17:32:40

支持一下,也就是半自动化的思路咯。

Atsai 发表于 2022-10-21 20:29:52

三角网=>取所有三角网的最低z值=>每个三角网跟最低z值面形成三角柱并求体积=>加总所有三角柱体积
这样也可以得到楼主用手动所求的资料。

树櫴希德 发表于 2022-10-22 21:30:52

Atsai 发表于 2022-10-21 20:29
三角网=>取所有三角网的最低z值=>每个三角网跟最低z值面形成三角柱并求体积=>加总所有三角柱体积
这样也可 ...

但是你得不到一个完整的3D SOLID
页: [1]
查看完整版本: 如何不全部利用CASS算平场土方体积猜想