(defun C:gesla (/ ss T_2 lang) (vl-load-com) (defun vl-lang (elem /) (if(=(getvar"cmdactive")1)(command)) (setq elem (vlax-ename->vla-object elem)) (cond ((= (vlax-property-available-p elem 'length) 'T) (vla-get-length elem) ) (T (vlax-curve-getDistAtParam elem (vlax-curve-getEndParam elem) ) ;_ end of vlax-curve-getDistAtParam ) ) ;_ end of cond ) ;_ end of defun (setq Ss nil t_2 nil lang 0 ) ;_ end of setq (prompt "\nObjekte zur längenermittlung wählen: ") (setq Ss (ssget '((-4 . "") ) ) ;_ end of ssget ) ;_ end of setq (if (not Ss) (princ (strcat "\nNichts gewählt.")) (progn (while (setq t_2 (ssname Ss 0)) (cond ((= (cdr (assoc 0 (entget t_2))) "CIRCLE") (setq lang (+ lang (* pi (* 2 (cdr (assoc 40 (entget t_2)))))) ) ;_ end of setq ) ((= (cdr (assoc 0 (entget t_2))) "ELLIPSE") (command "_area" "o" t_2 "") (setq lang (+ lang (getvar "perimeter"))) ) ((wcmatch (cdr (assoc 0 (entget t_2))) "*POLYLINE") (if (null (command "_area" "o" t_2)) (setq lang (+ lang (vl-lang t_2) ) ;_ end of + ) ;_ end of setq (setq lang (+ lang (getvar "perimeter"))) ) ;_ end of if ) (t (setq lang (+ lang (vl-lang t_2) ) ;_ end of + ) ;_ end of setq ) ) ;_ end of cond (setq Ss (ssdel t_2 Ss)) ) ;while (princ (strcat "\n*****Gesamtlänge: " (rtos lang 2 5)) ) ;_ end of princ (terpri) ) ;endprogn ) ;endif (princ) ) ;defun (prompt "\nStarten mit 'gesla' ") ;|«Visual LISP© Format Options» (72 2 40 1 T "end of " 60 9 0 0 0 nil T nil T) ;*** KEINEN Text unterhalb des Kommentars hinzufügen! ***|;