Re: LISP. Подсчет длины линий на определенном слое
> Pave1
Люблю я похвалы
Спасибо!
Лови до кучи с запросом маштаба (коэффициента)...
(defun c:mlen3 (/ m) (vl-load-com) (setq m (getreal "\nвведите маштабный коэффициент:\t")) (princ "\n\n Общая длинна всех линейных примитивов по слоям:") (mlen3_1 t) (princ) ) ;_ defun (defun mlen3_1 (i) (if (setq i (tblnext "LAYER" i)) (progn (mlen3_2 (cdadr i)) (mlen3_1 nil) ) ;_ progn ) ;_ if ) ;_ defun (defun mlen3_2 (lay / SS SUM_LEN) (if (setq sum_len 0. ss (ssget "_X" (list (cons 8 lay))) ) ;_ setq (foreach item (mapcar (function vlax-ename->vla-object) (vl-remove-if (function listp) (mapcar (function cadr) (ssnamex ss) ) ;_ mapcar ) ;_ vl-remove-if ) ;_ mapcar (setq sum_len (+ sum_len (if (vlax-property-available-p item 'length) (vla-get-length item) (cond ((= (strcase (vla-get-objectname item) t) "acdbarc" ) ;_ = (vla-get-arclength item) ) ((= (strcase (vla-get-objectname item) t) "acbcircle" ) ;_ = (* pi 2.0 (vla-get-radius item)) ) (t 0.0) ) ;_ cond ) ;_ if ) ;_ + ) ;_ setq ) ;_ foreach ) ;_ if (princ (strcat "\n\t" lay " = " (rtos (* sum_len m) 2 4))) ) ;_ defun