;a modified version of AT.LSP, will place text adjacent to a curve ;or circle, inside, outside, clockwise or counteclockwise (defun C:ARCTXT () (setvar "cmdecho" 0) (setq st (getstring "\nEnter string: " ) ht (getreal "\nCharacter height: " ) cp (getpoint "\nCenter of arc: ") mp (getpoint "\nPoint on arc to center text:") zz (getstring "\nText on utside or nside of curve:") di (getstring "\nRead text clockwise , counterclockwise :") ra (distance cp mp) ah (* ht 1.5) bh (/ ht 2.0) ) (if (and (or (= zz "I") (= zz "i")) (or (= di "A") (= di "a")) ) (and (setq ra (- ra ah)) (setq di 1) ) ) (if (and (or (= zz "O") (= zz "o")) (or (= di "A") (= di "a")) ) (and (setq ra (+ ra bh)) (setq di 1) ) ) (if (and (or (= zz "I") (= zz "i")) (or (= di "B") (= di "b")) ) (and (setq ra (- ra bh)) (setq di -1) ) ) (if (and (or (= zz "O") (= zz "o")) (or (= di "B") (= di "b")) ) (and (setq ra (+ ra ah)) (setq di -1) ) ) (setq sl (strlen st) fd (* (/ (* ht sl) (* 2.0 pi ra)) 360.0) fa (/ (* fd pi) 180.0) ai (/ fa sl) a0 (+ (angle cp mp) (* di (/ fa 2.0))) nn 0 ss1 (ssadd) ) (while (< nn sl) (setq ap (- a0 (* di (* nn ai))) pt (polar cp ap ra) tr (- (/ (* 180.0 ap) pi) (* di 90.0)) nn (+ nn 1 ) ) (command "text" "c" pt ht tr (substr st nn 1)) (setq ss1 (ssadd (entlast) ss1)) ) (setq st st) )