(defun c:setstructssumpdepth (/ sstolist round ss
lst count vla-struct
index max-wall-thick
connected wall-thick sump-depth
)
;; Вспомогательная функция набор -> список
(defun sstolist (ss / sscnt sslist)
(setq sscnt 0)
(repeat (sslength ss)
(setq sslist (cons (ssname
ss
sscnt
) ;_ end of ssname
sslist
) ;_ end of cons
) ;_ end of setq
(setq sscnt (1+ sscnt)
) ;_ end of setq
) ;_ end of repeat
sslist
) ;_ end of defun
;; Вспомогательная функция для округления
(defun round (num prec)
(* prec
(if (minusp num)
(fix (- (/ num prec) 0.5))
(fix (+ (/ num prec) 0.5))
) ;_ end of if
) ;_ end of *
) ;_ end of defun
(vl-load-com)
;; Выбираем колодцы. Никакой защиты от неправильных действий
(setq ss (ssget '((0 . "AECC_STRUCTURE"))))
;; Конвертируем набор в список vla-объектов
(setq lst (mapcar 'vlax-ename->vla-object (sstolist ss)))
;; Счетчик обработанных колодцев
(setq count 0)
;; Проходим по списку колодцев
(foreach vla-struct lst
;; Если это соединительный колодец
(if (= (vlax-get-property vla-struct 'PartType) 102)
(progn
;; Индекс для подключенных труб
(setq index 0
;; Для сохранения максимальной толщины стенки трубы
max-wall-thick 0
;; Кол-во подключенных труб
connected (vlax-get-property vla-struct 'ConnectedPipesCount)
) ;_ end of setq
;; Проходим по количеству подключенных труб в колодце
(repeat connected
(setq
;; получаем толщину стенки трубы
wall-thick (vlax-get-property vla-struct 'PipeWallThickness index)
;; увеличиваем индекс
index (1+ index)
;; берем ее, если она больше предыдущих
max-wall-thick (max max-wall-thick wall-thick)
) ;_ end of setq
) ;_ end of repeat
;; вычисляем глубину отстойной части
(setq sump-depth (+ 0.03 (round max-wall-thick 0.01)))
;; задаем ее колодцу
(vlax-put-property vla-struct 'SumpDepth sump-depth)
;; обновляем колодец в соответствии с подключенными трубами
(vlax-invoke-method vla-struct 'ResizeByPipeDepths)
;; увеличиваем счетчик обработанных колодцев
(setq count (1+ count))
) ;_ end of progn
) ;_ end of if
) ;_ end of foreach
;; выводим сообщение о результатах
(princ (strcat "\nОбработано колодцев: " (itoa count)))
;; тихий выход
(princ)
) ;_ end of defun