p0026376 Posted April 16, 2010 Share 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 Link to comment Share on other sites More sharing options...
leigh_elkins Posted April 16, 2010 Share Posted April 16, 2010 Are we talking about MText or some other form of text? Quote Link to comment Share on other sites More sharing options...
p0026376 Posted April 16, 2010 Author Share 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 Link to comment Share on other sites More sharing options...
Lee Mac Posted April 16, 2010 Share Posted April 16, 2010 Why not just use the Rotate command and snap to the insertion? Quote Link to comment Share on other sites More sharing options...
dbroada Posted April 16, 2010 Share Posted April 16, 2010 or just change the rotation in the properties palette Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted April 16, 2010 Share 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 Link to comment Share on other sites More sharing options...
p0026376 Posted April 16, 2010 Author Share 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 Link to comment Share on other sites More sharing options...
Lee Mac Posted April 16, 2010 Share 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 Link to comment Share on other sites More sharing options...
p0026376 Posted April 16, 2010 Author Share 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 Link to comment Share on other sites More sharing options...
Lee Mac Posted April 16, 2010 Share Posted April 16, 2010 I haven't engineered it to work with Tags within blocks. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted April 16, 2010 Share 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 Link to comment Share on other sites More sharing options...
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.