明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 656|回复: 2

[源码] 多边形面积求和

[复制链接]
发表于 2020-4-10 13:22 | 显示全部楼层 |阅读模式
购买主题 已有 7 人购买  本主题需向作者支付 1 个明经币 才能浏览
发表于 2020-6-13 22:58 | 显示全部楼层
面积求和
;;; 面积求和.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)
)
发表于 2020-6-13 22:58 | 显示全部楼层
(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)
  )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 12:27 , Processed in 0.181226 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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