gduthy 发表于 2020-4-10 13:22:36

已有 7 人购买  本主题需向作者支付 1 个明经币 才能浏览 购买主题

yanshengjiang 发表于 2020-6-13 22:58:22

面积求和
;;; 面积求和.LSP
;;; 功能: 计算多个选择对象的总面积

(defun c:ZMJ (/ olderr oldcmdecho errexit undox restore ss1 nr en tot_area)
(defun errexit (s)
(restore)
)

(defun undox ()
(command "._undo" "_E")
(setvar "cmdecho" oldcmdecho)
(setq *error* olderr)
(princ)
)

(setq olderr *error*
restore undox
*error* errexit
)
(setq oldcmdecho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "._UNDO" "_BE")
(if (setq ss1 (ssget '((-4 . "<OR")
(0 . "POLYLINE")
(0 . "LWPOLYLINE")
(0 . "CIRCLE")
(0 . "ELLIPSE")
(0 . "SPLINE")
(0 . "REGION")
(-4 . "OR>")
)
)
)
(progn
(setq nr 0)
(setq tot_area 0.0)
(setq en (ssname ss1 nr))
(while en
(command "._area" "_O" en)
(setq tot_area (+ tot_area (getvar "area")))
(setq nr (1+ nr))
(setq en (ssname ss1 nr))
)
(princ "\n总面积 = ")
(princ tot_area)
)
)
(restore)
)

yanshengjiang 发表于 2020-6-13 22:58:34

(defun c:mjqh()
(setq blc (getvar "userr1"))
(if (= blc 0) (setq blc 1000.0))
(setq blc2 (/ 1000.0 blc))
(setq mj (ssget ))
   (if mj
    (progn
      (setq mjts 0.0)
      (setq mjsd 0.0)
      (setq len (sslength mj) n 0)
      (repeat len
        (setq mj2 (ssname mj n))
        (setq n (+ n 1))
        (command "area" "o" mj2)
        (setq mjts (+ mjts (getvar "area")))
        (setq mjsd (+ mjsd (/ (getvar "area") blc2 blc2)))
        )
      )
   )
(princ (strcat "\n图上面积 = " (rtos mjts 2 5)))
(princ (strcat "\n实地面积 = " (rtos mjsd 2 5) " 平方米"))
(princ)
)
页: [1]
查看完整版本: 多边形面积求和