明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 572|回复: 4

[提问] 获取多个面积之后,如何用最大的减去剩余所有的面积?

[复制链接]
发表于 2020-7-7 19:50 | 显示全部楼层 |阅读模式
2明经币
本帖最后由 小万LISP 于 2020-7-7 19:52 编辑

已经获取了一些面积,想其中最大的一个面积,减去 剩余所有的面积,接下来该如何操作呢?
  • (defun c:tt(/ ss S i)
  •   (princ "\n 获取封闭图形的面积:\n")
  •   (setq
  •     ss (ssget '((0 . "*POLYLINE,REGION"))  )
  •     i (sslength ss)
  •   )
  •   (terpri)
  •   (repeat i
  •     (setq
  •       i (1- i)
  •       S (vla-get-Area (vlax-ename->vla-object (ssname ss i)))
  •     )
  •     (princ S)(terpri)
  •   )
  •   (princ)
  • )
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

(defun c:tt(/ ss S i) (princ "\n 获取封闭图形的面积:\n") (if (setq ss (ssget '((0 . "*POLYLINE,REGION")))) (progn (setq n (sslength ss)) (setq i 0) (setq alb nil) (repeat n (setq s (vl-catch-all-apply 'vla-get-Area (list (vlax-ename->vla-object (ssname ss i))))) (If (not (vl-catch-all-error-p s)) (progn ...
发表于 2020-7-7 19:50 | 显示全部楼层
(defun c:tt(/ ss S i)
  (princ "\n 获取封闭图形的面积:\n")
  (if (setq ss (ssget '((0 . "*POLYLINE,REGION"))))
      (progn
          (setq n (sslength ss))
          (setq i 0)
          (setq alb nil)
          (repeat n
              (setq s (vl-catch-all-apply 'vla-get-Area (list (vlax-ename->vla-object (ssname ss i)))))
              (If (not (vl-catch-all-error-p s))
                  (progn
                      (princ (strcat "\nArea=" (rtos s)))
                      (setq alb (cons s alb))
                  )
              )
              (setq i (1+ i))
          )
          (If (/= alb nil)
              (progn
                  (setq alb (vl-sort alb '>))
                  (setq ds (car alb))
                  (setq ds1 0)
                  (foreach s (cdr alb)
                       (setq ds1 (+ ds1 s))
                  )
                  (princ (strcat "\n 最大面积-其余所有面积=" (rtos ds 2 3) "-" (rtos ds1 2 3) "=" (rtos (- ds ds1) 2 3)))
              )
          )
      )
  )
  (princ)
)
回复

使用道具 举报

发表于 2020-7-7 20:12 | 显示全部楼层
判断曲线的包含关系
回复

使用道具 举报

发表于 2020-7-9 10:35 | 显示全部楼层
已收藏,谢谢
回复

使用道具 举报

发表于 2020-8-28 09:45 | 显示全部楼层
yshf 发表于 2020-7-7 19:50
(defun c:tt(/ ss S i)
  (princ "\n 获取封闭图形的面积:\n")
  (if (setq ss (ssget '((0 . "*POLYLIN ...

你好这个可以修改下吗,可以改成米为单位,然后可以最后的结果插入cad
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 10:51 , Processed in 0.193859 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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