p0026376 Posted April 16, 2010 Posted April 16, 2010 Hello all! I'm wondering if anyone has developed a lisp routine to rotate text to an angle input via the mouse. IE: select text/tag type command select first point, select second point outcome: text will rotate such that the angle it is at is the one between the first and second point selected. Thanks! Quote
leigh_elkins Posted April 16, 2010 Posted April 16, 2010 Are we talking about MText or some other form of text? Quote
p0026376 Posted April 16, 2010 Author Posted April 16, 2010 I was hoping for any kind of text so I didn't have to have a different command for regular text, mtext, tags, etc. Quote
Lee Mac Posted April 16, 2010 Posted April 16, 2010 Why not just use the Rotate command and snap to the insertion? Quote
dbroada Posted April 16, 2010 Posted April 16, 2010 or just change the rotation in the properties palette Quote
Lee Mac Posted April 16, 2010 Posted April 16, 2010 I suppose the LISP isn't too difficult: (defun c:tRot (/ ss ang e i) (if (and (setq ss (ssget "_:L" '((0 . "*TEXT,ATTDEF")))) (setq ang (getangle "\nSpecify Angle: "))) ( (lambda ( i ) (while (setq e (ssname ss (setq i (1+ i)))) (entmod (subst (cons 50 ang) (assoc 50 (entget e)) (entget e))))) -1)) (princ)) Quote
p0026376 Posted April 16, 2010 Author Posted April 16, 2010 I suppose the LISP isn't too difficult: (defun c:tRot (/ ss ang e i) (if (and (setq ss (ssget "_:L" '((0 . "*TEXT,ATTDEF")))) (setq ang (getangle "\nSpecify Angle: "))) ( (lambda ( i ) (while (setq e (ssname ss (setq i (1+ i)))) (entmod (subst (cons 50 ang) (assoc 50 (entget e)) (entget e))))) -1)) (princ)) perfect! sorta... it seems that text rotates 90deg more than I ask, where as mtext rotates exactly (perhaps this has to do with UCS orientation?), also would it be possible for this to also work for tags? thanks!! Quote
Lee Mac Posted April 16, 2010 Posted April 16, 2010 Try this: (defun c:tRot (/ ss ang e eLst) (if (and (setq ss (ssget "_:L" '((0 . "*TEXT,ATTDEF")))) (setq ang (getorient "\nSpecify Angle: "))) ( (lambda ( i ) (while (setq e (ssname ss (setq i (1+ i)))) (entmod (subst (cons 50 (if (eq "MTEXT" (cdr (assoc 0 (setq eLst (entget e))))) ang (+ ang (angle '(0 0 0) (getvar 'UCSXDIR))))) (assoc 50 eLst) eLst)))) -1)) (princ)) Quote
p0026376 Posted April 16, 2010 Author Posted April 16, 2010 Try this: awesome! should ATTDEG cause it to work with tags? it doesn't seem to want to work with them, does MEP handle tags differently? thanks! Quote
Lee Mac Posted April 16, 2010 Posted April 16, 2010 I haven't engineered it to work with Tags within blocks. Quote
Lee Mac Posted April 16, 2010 Posted April 16, 2010 This should work with all Text, MText and Attribs in any UCS: [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:tRot [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss ang e eLst xAng e[b][color=RED])[/color][/b] [i][color=#990099]; Lee Mac ~ 16.04.10[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#a52a2a]"_:L"[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=#009900]-4[/color][/b] . [b][color=#a52a2a]"<OR"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#a52a2a]"*TEXT,ATTDEF"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]-4[/color][/b] . [b][color=#a52a2a]"<AND"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#a52a2a]"INSERT"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]66[/color][/b] . [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]-4[/color][/b] . [b][color=#a52a2a]"AND>"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=#009900]-4[/color][/b] . [b][color=#a52a2a]"OR>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ang [b][color=RED]([/color][/b][b][color=BLUE]getorient[/color][/b] [b][color=#a52a2a]"\nSpecify Angle: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] i [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] xAng [b][color=RED]([/color][/b][b][color=BLUE]angle[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009999]0.[/color][/b] [b][color=#009999]0.[/color][/b] [b][color=#009999]0.[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]trans[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=DARKRED]'[/color][/b]UCSXDIR[b][color=RED])[/color][/b] [b][color=#009900]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]trans[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009999]0.[/color][/b] [b][color=#009999]0.[/color][/b] [b][color=#009999]1.[/color][/b][b][color=RED])[/color][/b] [b][color=#009900]1[/color][/b] [b][color=#009900]0[/color][/b] [b][color=BLUE]t[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] e [b][color=RED]([/color][/b][b][color=BLUE]ssname[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] i [b][color=RED]([/color][/b][b][color=BLUE]1+[/color][/b] i[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#a52a2a]"INSERT"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] eLst [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] e[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#a52a2a]"SEQEND"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]0[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] eLst [b][color=RED]([/color][/b][b][color=BLUE]entget[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] e [b][color=RED]([/color][/b][b][color=BLUE]entnext[/color][/b] e[b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entmod[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]subst[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]50[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] ang xAng[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]50[/color][/b] eLst[b][color=RED])[/color][/b] eLst [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entmod[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]subst[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=#009900]50[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#a52a2a]"MTEXT"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cdr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]0[/color][/b] eLst[b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] ang [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] ang xAng[b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]assoc[/color][/b] [b][color=#009900]50[/color][/b] eLst[b][color=RED])[/color][/b] eLst [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=#009900]-1[/color][/b] [b][color=RED])[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b] [b][color=RED])[/color][/b] Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.