;Place text above or below a line or polyline segment. ("above" breaks @ 107^-287^) ; ; AUTHOR: HENRY C. FRANCIS ; 425 N. ASHE ST. ; SOUTHERN PINES, NC 28387 ; ; All rights reserved without prejudice. ; Copyright: 4-7-95 ; Edited: 4-7-95 ; (DEFUN C:LSTR ( / bkp1b bkp1m bkp1r bkp1l bkp1a bkp2b bkp2m bkp2r bkp2l bkp2a bkp3b bkp3m bkp3r bkp3l bkp3a selpt tstpt templ oldcl clayr endp1 endp2 lang ldist osang txtht ptabv ptblw lstr_ent) (if c:mklayr nil (load"mklayr")) (c:svlayr) (if dimscl nil (load"dimscl")) (dimscl) (if getstyle nil (load"getstyle")) (getstyle "A") (setq thts (ustr 1 "\n\"Leroy Template Size\" or Standard(=87.5) " (if thts thts "Standard")nil)) (cond ((or(eq (substr thts 1 1) "S")(eq (substr thts 1 1) "s")) (setq colr "2")) ((<=(atoi thts)80) (setq colr "1")) ((<=(atoi thts)125) (setq colr "2")) ((<(atoi thts)200) (setq colr "4")) ((>=(atoi thts)200) (setq colr "5")) (thts (setq colr "2" thts "87.5")) );cond (if(or(eq (substr thts 1 1) "S")(eq (substr thts 1 1) "s")) (setq txtht (* 0.0875 dimsc)) (setq txtht (*(*(atoi thts)0.001) dimsc)) );if ; (setvar "TEXTSIZE" txtht) (princ "\nSelect Line: ") (while (and (setq selpt (grread)) (or (eq(nth 0 selpt)3) (eq(nth 0 selpt)12) );or );and (setq tstpt (nth 1 selpt)) (if (and (setq sel1 (nentselp "" tstpt)) (or (eq "LINE" (cdr(assoc 0(entget(car sel1))))) (eq "VERTEX" (cdr(assoc 0(entget(car sel1))))) );or );and (progn (setq oldcl clayr clayr (cdr(assoc 8(entget(car sel1)))) );setq (if (clnmstd) (progn (setq mjrg (substr clayr 1 1) llt "-" prod (substr clayr 3 4) modf "NOTE" );setq (c:mklayr) );progn (progn (setq clayr oldcl) (c:slent) );progn );if (setq endp1 (trans(cdr(assoc 10(entget(car sel1)))) 0 1)) (if (eq "LINE" (cdr(assoc 0(entget(car sel1))))) (setq endp2 (trans(cdr(assoc 11(entget(car sel1)))) 0 1)) (setq endp2 (trans(cdr(assoc 10(entget(entnext(car sel1))))) 0 1)) );if (setq lang (angle endp1 endp2) chkang (+ lang (getvar"viewtwist")) ldist (distance (list(car endp1)(cadr endp1)) endp2)) (if (and(> chkang 1.868)(< chkang 5.01)) (setq tang (angtos (+ pi lang) 1 4) osang (+(* pi 1.5) lang)) (setq tang (angtos lang 1 4) osang (+(* pi 0.5) lang)) );if (setq ltpt (polar endp1 lang (distance (list(car endp1)(cadr endp1)) tstpt)) ptabv (polar ltpt osang (* 1.1 txtht)) ptblw (polar ltpt (+ osang pi)(* 1.1 txtht)) mkdis (/(distance (list(car ltpt)(cadr ltpt)) ptabv)2) );setq (grdraw endp1 endp2 -1) (if (<(distance (list(car ptblw)(cadr ptblw)) tstpt)(distance (list(car ptabv)(cadr ptabv)) tstpt)) (setq mrkr1 (polar ptblw lang mkdis) mrkr2 (polar ptblw (+ lang pi) mkdis) vlis (list 256 mrkr1 mrkr2 256 mrkr2 ltpt 256 ltpt mrkr1)) (setq mrkr1 (polar ptabv lang mkdis) mrkr2 (polar ptabv (+ lang pi) mkdis) vlis (list 256 mrkr1 mrkr2 256 mrkr2 ltpt 256 ltpt mrkr1)) );if (grvecs (eval 'vlis)) (setq txstr (ukword 1 "Key-in Select Default" (strcat"Key-in, Select or accept Default=<"(if lstr_txt lstr_txt "nil")">")(if txstr txstr "Default"))) (cond ((eq txstr "Key-in")(setq lstr_txt (ustr 1 "Enter text" (if txstr txstr (strcat(rtos ldist)"'")) "T"))) ((eq txstr "Default")(if lstr_txt nil (setq lstr_txt "?"))) ((eq txstr "Select") (while (not lstr_ent) (setq lstr_ent (entsel)) ) (while (not(=(cdr(assoc 0 (entget(car lstr_ent))))"TEXT")) (setq lstr_ent (entsel "\nNot a TEXT entity, select again.")) ) (setq lstr_txt (cdr(assoc 1(entget(car lstr_ent))))) ) );cond (if (<(distance (list(car ptblw)(cadr ptblw)) tstpt)(distance (list(car ptabv)(cadr ptabv)) tstpt)) (command ".text" "j" "mc" ptblw txtht tang lstr_txt) (command ".text" "j" "mc" ptabv txtht tang lstr_txt) );if (if(= txstr "Select") (progn (setq ent_disp (ukword 1 "Keep Erase" "Keep or Erase Selected text?" (if ent_disp ent_disp "Keep"))) (if (= ent_disp "Erase") (entdel (car lstr_ent)) ) );progn );if (setq lcolr (cdr(assoc 62(tblsearch "layer"(cdr(assoc 8(entget(car sel1)))))))) (grdraw endp1 endp2 -1) ; (grdraw endp1 endp2 lcolr) ; (setq vlis (subst '256 '7 vlis)) (grvecs (eval 'vlis)) (princ "\nSelect Line: ") );progn );if );while (c:rslayr) (getstyle "") );defun