Как в автокаде подсчитать суммы выделенных "областей" (region)
Всем добрый день, взываю к силе спецов с Пикабу.
Понадобилось мне недавно подсчитать в автокаде сумму площадей уймы областей оставшихся после расчленённого 3D тела.
Областей тьма, каждый выделять по отдельности и вбивать их площадь из свойств в эксель для последующего суммирования та ещё не благодарная рутина.
Вспомнил что был lisp для автоматического подсчёта отдельных отрезков "Linesum.lsp"
Попытался сварганить лисп для аналогичного подсчёта областей по аналогии с помощью Алисы. 🤦♂️ Ага, я наивный дамал, что всё так просто.
Алиса выдала несколько вариантов, но все оказались не рабочими, выкладываю её последний образец кода лиспа:
Код:
(defun C:суммарегионов-ax (/ sset ent itm num tot obj)
(princ "\nВыделите REGION: ")
(setq sset (ssget '((0 . "REGION"))))
(if sset
(progn
(setq num (sslength sset) itm 0 tot 0.0)
(while (< itm num)
(setq ent (ssname sset itm))
;; Получаем объект через vla-get-objectname и считаем площадь
(setq obj (vlax-ename->vla-object ent))
(if (and obj (vlax-method-applicable-p obj 'GetArea))
(progn
(setq tot (+ tot (vlax-invoke obj 'GetArea)))
)
)
(setq itm (1+ itm))
)
(princ (strcat "\nTotal Area = " (rtos tot 2 3) " кв.ед."))
)
(princ "\nНе найдено REGION.")
)
(princ)
)
Но автокад (у меня 2022-й) с упорством религиозного фанатика на каждый вариант кода лиспа рождённого Алисой, в командной строке выдавал квадратуру по нулям, как к одинарно выделенной области, так к нескольким:
Команда: СУММАРЕГИОНОВ-AX
Выделите REGION:
Выберите объекты: Противоположный угол: найдено: 4
Выберите объекты: Противоположный угол: найдено: 3 (2 повторно), всего: 5
Выберите объекты:
Total Area = 0 кв.ед.
Причём результат "0 кв. ед." выдавался как к вертикально, горизонтально так под углом расположенных областей.
Может кто из Гуру поможет в вопросе, в чём тут ошибка, или автоматический подсчёт поверхностей не реален в каде? Увы, в кодинге я разбираюсь как свинота в атомной физике.
С Уважением!
Дополнение.
Думал, что поможет команда "масс-хар" (она же "_massprop") с последующим выделением поверхностей и получением суммарной площади, но нихрена, считает только объединённые области в одной плоскости.
Помог вот этот скрипт от А. Равилиса с форума DWG.RU.













