;; | ----------------------------------------------------------------------------- ;; | TX_CurveText ;; | ----------------------------------------------------------------------------- ;; | Function : Create text along a curve ;; | Arguments: 'ename' - Name of the curve object along which to create text ;; | 'pp' - Point on curve to create text at (applicable only ;; | when the AnnotMode is 'PickedPt') ;; | 'AnnotMode' - Annotation Mode (can be either 'Automatic' or ;; | 'PickedPt') ;; | 'AnnotInt' - Annotation Interval (text spacing) ;; | 'AnnotStr' - Text String to use for annotation ;; | 'TxtOffset' - Text Offset from curve ;; | 'TxtHgt' - Text Height (AutoCAD units) ;; | 'TxtSpcChar' - Spacing between each character ;; | 'TxtSpcWord' - Spacing between each word ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ----------------------------------------------------------------------------- (defun TX_CurveText ( ename pp AnnotMode AnnotInt AnnotStr TxtOffset TxtHgt TxtSpcChar TxtSpcWord / CurveLen More d _d len oname cnt vlist ss ang AnnotInt Char ename1 fd Insp param pp pt1 ) (setq CurveLen (MI_CurveLength ename) ss (ssadd) ) (if (= AnnotMode "Automatic") (progn (setq More T d 0.0 ) (while More (setq d (+ d AnnotInt) _d d ) (if (<= _d CurveLen) (progn (setq len (strlen AnnotStr) oname (vlax-ename->vla-object ename) cnt 1 vlist '() ) (repeat len (setq Char (substr AnnotStr cnt 1) cnt (1+ cnt) ) (if (<= _d CurveLen) (progn (setq param (vlax-curve-getParamAtDist oname _d)) (if param (progn (setq Insp (vlax-curve-getPointAtParam oname param) fd (vlax-curve-getFirstDeriv oname param) pt1 (MI_Shift Insp (car fd) (cadr fd) (caddr fd)) ang (angle Insp pt1) pt1 (polar Insp (+ ang #pb2) TxtOffset) vlist (cons pt1 vlist) _d (+ _d TxtHgt TxtSpcChar) ) (if (/= Char "") (progn (command "._Text" "_MC" pt1 TxtHgt (MI_r2d ang) Char) (setq ename1 (entlast)) (ssadd ename1 ss) )) )) ) (setq More nil) ) ) (vlax-release-object oname) ) (setq More nil) ) ) ) (progn (setq oname (vlax-ename->vla-object ename) len (strlen AnnotStr) cnt 1 vlist '() ) (setq Insp (vlax-curve-getClosestPointTo oname pp)) (if Insp (progn (setq _d (vlax-curve-getDistAtPoint oname Insp)) (repeat len (setq Char (substr AnnotStr cnt 1) cnt (1+ cnt) ) (if (<= _d CurveLen) (progn (setq param (vlax-curve-getParamAtDist oname _d)) (if param (progn (setq Insp (vlax-curve-getPointAtParam oname param) fd (vlax-curve-getFirstDeriv oname param) pt1 (MI_Shift Insp (car fd) (cadr fd) (caddr fd)) ang (angle Insp pt1) pt1 (polar Insp (+ ang #pb2) TxtOffset) vlist (cons pt1 vlist) _d (+ _d TxtHgt TxtSpcChar) ) (if (/= Char "") (progn (command "._Text" "_MC" pt1 TxtHgt (MI_r2d ang) Char) (setq ename1 (entlast)) (ssadd ename1 ss) )) )) )) ) (vlax-release-object oname) )) )) (if (> (sslength ss) 0) (eval ss) nil) )