明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 407|回复: 4

如何求屋面膜的面积

[复制链接]
发表于 2015-10-27 17:00 | 显示全部楼层 |阅读模式
本人手上有一工程结算,在计算屋面膜面积时犯了难一直求不出来(结构如下图、手上有CAD)。所以请教各位大神,在此先谢过了。


该贴已经同步到 我爱欧洲杯123的微博

本帖子中包含更多资源

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

x
发表于 2015-10-30 20:49 | 显示全部楼层
根据图面三角网计算表面积 论坛测量测绘
发表于 2015-11-3 08:04 | 显示全部楼层
用犀牛插件grasshopper中的area电池,应该能很好解决楼主的问题
发表于 2017-9-20 12:51 | 显示全部楼层
把膜炸开成3DFace,再用下面的程序得出

;;;Calculate the total area of all selected 3DFaces
(defun C:FArea
       (/ farea parea ss idx cpt1 cpt2 cpt3 cpt4 a1 b1 c1 a2 b2 c2)
  (if (setq ss (ssget '((0 . "3DFACE"))))
    (progn
      (setq idx        0
            farea 0
      )
      (repeat (sslength ss)
        (setq ent (entget (ssname ss idx)))
        (setq cpt1 (dxf 10 ent)
              cpt2 (dxf 11 ent)
              cpt3 (dxf 12 ent)
              cpt4 (dxf 13 ent)
        )
        (setq a1 (distance cpt1 cpt2)
              b1 (distance cpt1 cpt3)
              c1 (distance cpt2 cpt3)
              a2 (distance cpt1 cpt4)
              b2 (distance cpt1 cpt3)
              c2 (distance cpt3 cpt4)
        )
        (setq farea
               (+
                 farea
                 (/ (sqrt (ABS (- (expt        (+ (expt a1 2)
                                           (expt b1 2)
                                           (expt c1 2)
                                        )
                                        2
                                  )
                                  (* 2 (+ (expt a1 4) (expt b1 4) (expt c1 4)))
                               )
                          )
                    )
                    4.0
                 )
                 (/ (sqrt (ABS (- (expt        (+ (expt a2 2)
                                           (expt b2 2)
                                           (expt c2 2)
                                        )
                                        2
                                  )
                                  (* 2 (+ (expt a2 4) (expt b2 4) (expt c2 4)))
                               )
                          )
                    )
                    4.0
                 )
               )
        )
        (setq idx (1+ idx))
      )                                        ; repeat
      (setq idx        0
            parea 0
      )
      (repeat (sslength ss)
        (setq ent (entget (ssname ss idx)))
        (setq cpt1 (flatten (dxf 10 ent))
              cpt2 (flatten (dxf 11 ent))
              cpt3 (flatten (dxf 12 ent))
              cpt4 (flatten (dxf 13 ent))
        )
        (setq a1 (distance cpt1 cpt2)
              b1 (distance cpt1 cpt3)
              c1 (distance cpt2 cpt3)
              a2 (distance cpt1 cpt4)
              b2 (distance cpt1 cpt3)
              c2 (distance cpt3 cpt4)
        )
        (setq parea
               (+
                 parea
                 (/ (sqrt (ABS (- (expt        (+ (expt a1 2)
                                           (expt b1 2)
                                           (expt c1 2)
                                        )
                                        2
                                  )
                                  (* 2 (+ (expt a1 4) (expt b1 4) (expt c1 4)))
                               )
                          )
                    )
                    4.0
                 )
                 (/ (sqrt (ABS (- (expt        (+ (expt a2 2)
                                           (expt b2 2)
                                           (expt c2 2)
                                        )
                                        2
                                  )
                                  (* 2 (+ (expt a2 4) (expt b2 4) (expt c2 4)))
                               )
                          )
                    )
                    4.0
                 )
               )
        )
        (setq idx (1+ idx))
      )                                        ; repeat
      (alert (strcat "\nSurface Area:  "
                     (rtos farea 1 3)
                     " unit sq."
                     "\nPlan Area:     "
                     (rtos parea 1 3)
                     " unit sq."
             )
      )
    )                                        ;progn
  )                                        ; if
  (princ)
)                                        ;end defun

(defun Flatten (pt)
  (list (car pt) (cadr pt) 0)
)
发表于 2017-10-27 14:18 | 显示全部楼层
感谢 alin 分享程序!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2018-1-18 15:51 , Processed in 0.202608 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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