Тема: LISP. Подсчет длины линий на определенном слое
Примечание:
1. Учитываются примитивы только типа LINE
2. Макрос для кнопки будет работать только если сохранить код в файле Calc_dist.lsp и поместить этот файл по одному из путей поиска акада (например в папку Support)
(defun calc_dist ( / lines layer index sum obj ) (vl-load-com) (setq sum 0) (setq index 0) (setq layer (assoc 8 (entget (car (entsel "\nSelect layer object:"))))) (setq lines (ssget "_x" (list '(0 . "LINE") layer))) (repeat (sslength lines) (setq obj (vlax-ename->vla-object (ssname lines index))) (setq sum (+ sum (distance (vlax-curve-getStartPoint obj) (vlax-curve-getEndPoint obj)))) (setq index (1+ index)) ) (princ (strcat "\nLength - " (rtos sum))) (princ) )
Макрос для кнопки
^C^C^P(if (not (calc_dist)) (load "calc_dist.lsp")) (calc_dist)