除了统计长度,统计面积可能就是另一个高频需求了。事实上,总的来讲,统计汇总类插件都可以算是高频需求。 毕竟,图纸画出来是拿来看的,不是画完就完了的。套用软件开发行业的说法,可能1分钟的画图时间, 要对应10分钟的看图时间。

既然看图时间远远多于画图,统计汇总自然就是一个永远存在的需求了。

统计面积的cad插件,比统计长度的略微复杂一点,总共19行autolisp代码。其中,有效行数15行,核心函数有效代码14行。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
(vl-load-com)
;;; no.2
(defun xg/sum-area (/ a a1 i ls n ob) 
  ;; 统计面积的核心函数
  ;; 作者:徐工, 微博:@徐工徐工2020,头条:@徐工徐工
  (if (and (setq ls (ssget)) (< 0 (setq n (sslength ls)))) 
    (progn 
      (setq i 0
            a 0)
      (repeat n 
        (setq ob (vlax-ename->vla-object (ssname ls i))
              i  (1+ i)
              a1 (vl-catch-all-apply 'vla-get-area (list ob)))
        (if (not (vl-catch-all-error-p a1)) 
          (setq a (+ a1 a))))
      (prompt (strcat "\n总面积为" (rtos a 2 3)))
      (princ))))

(defun c:mjmj () (xg/sum-area))

最后一行的c:mjmj意味着调用命令是mjmj,你可以修改为自己喜欢的快捷键。