明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: angel121204567

如何统计计取曲面、面域、闭合多段线的面积和

[复制链接]
发表于 2025-1-22 02:03:11 | 显示全部楼层
;;请试一试我编的程序:
;;计算各种表面、面域的面积和。设计 何勇
;;注意:绘图单位以毫米计。
(defun C:calmj(/ ss e ent)
  (setq ss (ssget))
  (setq are1 0)
  (while ss
    (setq
      e (ssname ss 0)
      ent (entget e)
      ss (if (> (sslength ss) 1)
             (ssdel e ss)
          nil
         )
    )
    (cond ((or (=  (cdr (assoc 0 ent))  "LWPOLYLINE")
                           (=  (cdr (assoc 0 ent))  "POLYLINE")
                           (=  (cdr (assoc 0 ent))  "REGION")
                           (=  (cdr (assoc 0 ent))  "LOFTEDSURFACE")
                           (=  (cdr (assoc 0 ent))  "SURFACE")
                           (=  (cdr (assoc 0 ent))  "REVOLVEDSURFACE")
                           (=  (cdr (assoc 0 ent))  "EXTRUDEDSURFACE")
                           (=  (cdr (assoc 0 ent))  "PLANESURFACE")
                           (=  (cdr (assoc 0 ent))  "SWEPTSURFACE")
                   )
                 (command "AREA" "e" e)
                   (setq
                         are1 (+ are1 (getvar "AREA"))
                   )
              )
        );;end cond
  );;end while
  (princ (strcat "\n总面积为:" (rtos are1) "mm2"))
  (princ (strcat "\n总面积为:" (rtos (/ are1 1000000.0)) "m2"))
  (prin1)
)

回复 支持 反对

使用道具 举报

发表于 2025-1-22 02:05:23 | 显示全部楼层
;;请试试我编的程序
;;计算各种表面、面域的面积和。设计 何勇
;;注意:绘图单位以毫米计。
(defun C:calmj(/ ss e ent)
  (setq ss (ssget))
  (setq are1 0)
  (while ss
    (setq
      e (ssname ss 0)
      ent (entget e)
      ss (if (> (sslength ss) 1)
             (ssdel e ss)
          nil
         )
    )
    (cond ((or (=  (cdr (assoc 0 ent))  "LWPOLYLINE")
                           (=  (cdr (assoc 0 ent))  "POLYLINE")
                           (=  (cdr (assoc 0 ent))  "REGION")
                           (=  (cdr (assoc 0 ent))  "LOFTEDSURFACE")
                           (=  (cdr (assoc 0 ent))  "SURFACE")
                           (=  (cdr (assoc 0 ent))  "REVOLVEDSURFACE")
                           (=  (cdr (assoc 0 ent))  "EXTRUDEDSURFACE")
                           (=  (cdr (assoc 0 ent))  "PLANESURFACE")
                           (=  (cdr (assoc 0 ent))  "SWEPTSURFACE")
                   )
                 (command "AREA" "e" e)
                   (setq
                         are1 (+ are1 (getvar "AREA"))
                   )
              )
        );;end cond
  );;end while
  (princ (strcat "\n总面积为:" (rtos are1) "mm2"))
  (princ (strcat "\n总面积为:" (rtos (/ are1 1000000.0)) "m2"))
  (prin1)
)

回复 支持 反对

使用道具 举报

发表于 2025-1-23 09:02:38 | 显示全部楼层
love1030312 发表于 2024-4-7 17:12
AI 还会写代码  用的什么有嗲好奇  请教下

kimi可以                              
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 01:10 , Processed in 0.146844 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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