Rain0923 发表于 2022-7-5 19:50:00

我如何用l计算面积

1、计算总红线面积
2、红柱脚总面积/黑柱脚总面积
如何使用lisp计算面积?
测验图纸

pBe 发表于 2022-7-5 19:54:56

 
红色总面积值除以黑色面积值?-->0.238058?? 或者反过来?4.20066 ??
 
(defun c:demo ( / _total ss ssd TareaRed TareaBlack ComputedArea)
(defun _total (sel / Value)
   (repeat (setq i (sslength sel))
                      (setq Value (cons (vlax-curve-getarea (ssname sel (setq i (1- i)))) Value)))
   (apply '+ Value)
   )
(defun _Rtos (v)(rtos v 2 2))      
   
   
      (if (and(princ "\nSelect RED pline(s)")
                (setq ss (ssget '((0 . "LWPOLYLINE"))))
                (princ "\nSelect Black pline")
                (setq ssD (ssget '((0 . "LWPOLYLINE"))))
                )
          (progn
                (setq TareaRed (_total ss))
                (setq TareaBlack (_total ssd))
                (setq ComputedArea ( / TareaRed TareaBlack))
                (alert (strcat "\nTotal area for RED pline(s): " (_rtos TareaRed )
                "\nTotal area for BLACK pline(s): " (_rtos TareaBlack )
                "\nTotal RED divided by BLACK: " (_rtos ComputedArea)
                "\nPercentage: "(_rtos (* 100.00ComputedArea)) "%"))
                )
          )
      (princ)
      )
      

Rain0923 发表于 2022-7-5 19:58:53

谢谢
0.238058是正确的。
这个lisp很好,但该层不在CSM中,因此无法使用。
它可以更改不锁定任何图层名称或颜色吗?
 
 

pBe 发表于 2022-7-5 20:00:32

当然,只需从代码中删除(8,“CSM”)。您还需要添加哪些其他条件?除数总是一个实体吗?

Rain0923 发表于 2022-7-5 20:04:02

太棒了现在可以使用了。
可能有什么百分比吗?
不,除数并不总是一个实体。它能更新吗?
谢谢:)
 

pBe 发表于 2022-7-5 20:06:46

 
你怎么得到Rain0923的百分比?给我看看,这样就不会有混乱了
 
 

Rain0923 发表于 2022-7-5 20:09:56

它显示0.238058和23.81%。。。
谢谢
 

pBe 发表于 2022-7-5 20:12:37

代码更新:Post#2

Rain0923 发表于 2022-7-5 20:17:14

很抱歉更新在哪里??
 
 

pBe 发表于 2022-7-5 20:21:29

张贴#2此线程。在那里↑
 
页: [1] 2
查看完整版本: 我如何用l计算面积