A place to start.
P=
Code:
(defun C:Line3Text (/ lstSublist objPline strLeft strMiddle strRight)
(vl-cmdf "pline" pause)
(while (= (getvar "cmdactive") 1)(vl-cmdf pause))
(setq objPLine (vlax-ename->vla-object (entlast)))
(setq strLeft "Left") ; (getstring "\nEnter Left Text: " T))
(setq strMiddle "Middle") ; (getstring "\nEnter Middle Text: " T))
(setq strRight "Right") ; (getstring "\nEnter Right Text: " T))
(setq sngTextHeight (getvar "textheight"))
(setq lstSublist (textposition objPline "L"))
(vl-cmdf "text" "j" "ml" (car lstSublist) (getvar "textsize") (* 180 (/ (cadr lstSublist) pi)) strLeft)
(setq lstSublist (textposition objPline "M"))
(vl-cmdf "text" "j" "mc" (car lstSublist) (getvar "textsize") (* 180 (/ (cadr lstSublist) pi)) strMiddle)
(setq lstSublist (textposition objPline "R"))
(vl-cmdf "text" "j" "mr" (car lstSublist) (getvar "textsize") (* 180 (/ (cadr lstSublist) pi)) strRight)
)
(defun TextAngle (objPline sngDistance / lstPoint1 lstPoint2)
(setq sngLocal 0.001)
(if (equal sngDistance 0.0 0.0001)
(setq sngDistance (+ sngDistance (* sngLocal 2.0)))
(if (equal sngDistance (plinelength objPline) 0.0001)
(setq sngDistance (- sngDistance (* sngLocal 2.0)))
)
)
(if (and
(setq lstPoint1 (vlax-curve-getpointatdist objPline (- sngDistance sngLocal)))
(setq lstPoint2 (vlax-curve-getpointatdist objPline (+ sngDistance sngLocal)))
)
(angle lstPoint1 lstPoint2)
)
)
(defun TextPoint (objPline sngDistance / lstPoint sngAngle )
(if (and
(setq lstPoint (vlax-curve-getpointatdist objPline sngDistance))
(setq sngAngle (textangle objPline sngDistance))
(setq sngAngle (+ (/ pi 2.0) sngAngle))
)
(setq lstPoint (polar lstPoint sngAngle (* (getvar "textsize") 1)))
)
)
(defun TextPosition (objPline strPosition / lstPoint sngAngle sngLength)
(setq sngLength (plinelength objPline))
(cond ((= strPosition "L")
(setq lstPoint (textpoint objPline 0.0))
(setq sngAngle (textangle objPline 0.0))
)
((= strPosition "M")
(setq lstPoint (textpoint objPline (/ sngLength 2.0)))
(setq sngAngle (textangle objPline (/ sngLength 2.0)))
)
((= strPosition "R")
(setq lstPoint (textpoint objPline (- sngLength 0.00001)))
(setq sngAngle (textangle objPline (- sngLength 0.00001)))
)
)
(if (and
lstPoint
sngAngle
)
(list lstPoint sngAngle)
)
)
(defun PlineLength (objPline)
(vlax-curve-getdistatparam objPline (vlax-curve-getendparam objPline))
)
(vl-load-com)