承台土方体积快速计算(附源代码)

论坛 期权论坛 期权     
测量   2019-6-29 18:51   1552   0
[url=http://mp.weixin.qq.com/s?__biz=MjM5ODAyMTA0MA==&mid=2652707869&idx=3&sn=f139b92533fcd705da0aa2c53f617a2c&chksm=bd38aec28a4f27d405a515d8f3176a417c4279a9a735e47e86a4f5eaf2f07768fdd3d58d9b79&scene=21#wechat_redirect][/url]
▼更多精彩教程,请关注我们▼
把时间交给测量





1.先求Offset后的矩型与承台矩型间的面域,分成A3:3m、A2:2m及A1:1m。
2. 3m之体积=A3*3m。(A3:面域面积,3m之深度可记于多义线Z值)
    2m之体积=(A2与A3面域差集面积)*2m。
    1m之体积=(A1与A2、A3差集面积)*1m。
    …依此类推
3.将V3+V2+V1就可以得到体积。
[code="lisp]
(defun c:tt ()
  (vl-load-com)
  (setq os (getvar "osmode"))
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (defun CLOCKWISEP (en / lw minp MaxP lst)
    (setq lw (vlax-ename->vla-object en))
    (vla-GetBoundingBox lw 'MinP 'MaxP)
    (setq
      minp (vlax-safearray->list minp)
      MaxP (vlax-safearray->list MaxP)
      lst  (mapcar
             (function
               (lambda (x)
                 (vlax-curve-getParamAtPoint
                   lw
                   (vlax-curve-getClosestPointTo lw x)
                 )
               )
             )
             (list minp
                   (list (car minp) (cadr MaxP))
                   MaxP
                   (list (car MaxP) (cadr minp))
             )
           )
    )
    (if        (or
          (list
                (vlax-variant-value
                  (vla-get-centroid
                    (vlax-ename->vla-object en)
                  )
                )
              )

    )
    (command "text" "j" "mc" ptc th "0" (1+ i))
    (command "circle" ptc th)
    (setq i (1+ i))
  )


  (setq pt (getpoint "\n选择文字插入点:"))
  (setq vol 0.0)
  (setq i 0)
  (foreach x a-lst
    (setq vol (+ vol (* (car x) (cadr x))))
    (command "text"
             "j"
             "bl"
             (polar pt (* 1.5 pi) (* i (* 1.5 th)))
             th
             "0"
             (strcat "\nNo"
                     (rtos (1+ i) 2 0)
                     ":"
                     (rtos (car x) 2 2)
                     "*"
                     (rtos (cadr x) 2 2)
                     "="
                     (rtos (* (car x) (cadr x)) 2 2)
                     "(m3)"
             )
    )
    (setq i (1+ i))
  )

  (command "text"
           "j"
           "bl"
           (polar pt (* 1.5 pi) (* i (* 1.5 th)))
           th
           "0"
           (strcat "\nTotal volume=" (rtos vol 2 2) "(m3)")
  )

  (setvar "osmode" os)
  (princ)
)
[/code]

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP