 - (defun pts-cen (pts / l)
- (setq l (length pts))
- (mapcar '(lambda (x) (/ x l)) (apply 'mapcar (cons '+ pts)))
- )
- (defun gvp (e)
- (vl-remove nil (mapcar '(lambda (x) (if (= (car x) 10) (trans (cdr x) 0 1))) (entget e)))
- )
- (defun mktext (la str pt th)
- (entmakex (list '(0 . "TEXT")
- (cons 8 la)
- (cons 1 str)
- (cons 10 pt)
- (cons 40 th)
- (cons 11 pt)
- (cons 71 0)
- (cons 72 1)
- (cons 73 2)
- )
- )
- )
- (defun MJ:rotate_pnt (pnt p1 ang /)
- (polar p1 (+ (angle p1 pnt) ang) (distance p1 pnt))
- )
- (defun c:tt ( / a e e0 i j l len lene ll pc pts pts sl ss txt)
- (setq ss (ssget '((0 . "LWPOLYLINE"))))
- (repeat (setq i (sslength ss))
- (setq e (ssname ss (setq i (1- i)))
- lene (Vlax-Get (Vlax-Ename->Vla-Object e) 'Length )
- pts (gvp e)
- pc (pts-cen pts)
- pts (mapcar '(lambda(x) (MJ:rotate_pnt x pc 0.01)) pts)
- sl (ssget "f" pts '((0 . "line")))
- l nil
- )
- (if (/= sl nil)
- (progn
- (repeat (setq j (sslength sl))
- (setq e0 (ssname sl (setq j (1- j)))
- len (Vlax-Get (Vlax-Ename->Vla-Object e0) 'Length )
- l (cons len l)
- )
- )
- (setq l (apply '+ l)
- ll (rtos (- lene l) 2 2)
- txt (mktext "tmp" (strcat (rtos lene 2 2) "-" (rtos l 2 2) "=" ll) pc (* 1e3 (getvar "dimtxt")))
- )
- )
- (mktext "tmp" (rtos lene 2 2) pc (* 1e3 (getvar "dimtxt")))
- )
- )
- )
|