Michaels Posted February 19, 2011 Posted February 19, 2011 Hello . I am looking forward to include Undo command within my routine which is the same as the one in line and Polyline commands . Things like going back throughout the routine without finalizing it . Command: L LINE Specify first point: Specify next point or [color=red][b][undo][/b][/color]: Many thanks Quote
Lee Mac Posted February 19, 2011 Posted February 19, 2011 Example: [color=RED]([/color][color=BLUE]defun[/color] c:test [color=RED]([/color] [color=BLUE]/[/color] p1 p2 p3 elist [color=RED])[/color] [color=#990099];;---------------------------------------------;;[/color] [color=#990099];; Example © Lee Mac 2011 - www.lee-mac.com ;;[/color] [color=#990099];;---------------------------------------------;;[/color] [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]setq[/color] p1 [color=RED]([/color][color=BLUE]getpoint[/color] [color=#a52a2a]"\nSpecify First Point: "[/color][color=RED])[/color] p3 p1[color=RED])[/color] [color=RED]([/color][color=BLUE]while[/color] [color=RED]([/color][color=BLUE]progn[/color] [color=RED]([/color][color=BLUE]initget[/color] [color=#a52a2a]"Undo"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] p2 [color=RED]([/color][color=BLUE]getpoint[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]"\nSpecify Next Point"[/color] [color=RED]([/color][color=BLUE]if[/color] elist [color=#a52a2a]" [undo]"[/color] [color=#a52a2a]""[/color][color=RED])[/color] [color=#a52a2a]": "[/color][color=RED])[/color] p1[color=RED]))[/color] [color=RED]([/color][color=BLUE]cond[/color] [color=RED]([/color] [color=RED]([/color][color=BLUE]and[/color] p2 [color=RED]([/color][color=BLUE]listp[/color] p2[color=RED]))[/color] [color=RED]([/color][color=BLUE]setq[/color] elist [color=RED]([/color][color=BLUE]cons[/color] [color=RED]([/color][color=BLUE]entmakex[/color] [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"LINE"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]10[/color] [color=RED]([/color][color=BLUE]trans[/color] p1 [color=#009900]1[/color] [color=#009900]0[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]11[/color] [color=RED]([/color][color=BLUE]trans[/color] p2 [color=#009900]1[/color] [color=#009900]0[/color][color=RED]))[/color] [color=RED])[/color] [color=RED])[/color] elist [color=RED])[/color] p1 p2 [color=RED])[/color] [color=RED])[/color] [color=RED]([/color] [color=RED]([/color][color=BLUE]eq[/color] [color=#a52a2a]"Undo"[/color] p2[color=RED])[/color] [color=RED]([/color][color=BLUE]if[/color] elist [color=RED]([/color][color=BLUE]progn[/color] [color=RED]([/color][color=BLUE]entdel[/color] [color=RED]([/color][color=BLUE]car[/color] elist[color=RED]))[/color] [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]setq[/color] elist [color=RED]([/color][color=BLUE]cdr[/color] elist[color=RED]))[/color] [color=RED]([/color][color=BLUE]setq[/color] p1 [color=RED]([/color][color=BLUE]cdr[/color] [color=RED]([/color][color=BLUE]assoc[/color] [color=#009900]11[/color] [color=RED]([/color][color=BLUE]entget[/color] [color=RED]([/color][color=BLUE]car[/color] elist[color=RED])))))[/color] [color=RED]([/color][color=BLUE]setq[/color] p1 p3[color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color] [color=#a52a2a]"\n** Nothing to Undo **"[/color][color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color] [color=RED])[/color] Quote
Michaels Posted February 19, 2011 Author Posted February 19, 2011 Amazing Lee . I have this routine and I wanted to include the Undo command with it , and I tried for along while but with no chance . So could you please guide me to it ? Here is a part of my long routine and all actions are made with defuns as shown downstairs. (defun c:test ( / txt str pt ) (while (progn (initget "Text Mtext") (setq txt (getkword "\n Specify your type [Text,Mtext] :"))) (cond ((eq txt "Text")(progn (setq str (getstring T "\n Enter your string :")) (setq pt (getpoint "\n Text location :")) (WriteText str pt))) ((eq txt "Mtext")(progn (setq str (getstring T "\n Enter your string :")) (setq pt (getpoint "\n Mtext location :")) (WriteMText str pt)))) ) (princ)) ;;;;--------------------------------------------------------------------------------------- (defun WriteText (str pt ) (entmakex (list (cons 0 "TEXT")(cons 40 100.)(cons 1 str)(cons 10 pt))) ) ;;;;--------------------------------------------------------------------------------------- (defun WriteMText (str pt ) (entmakex (list (cons 0 "MTEXT")(cons 100 "AcDbEntity")(cons 100 "AcDbMText")(cons 40 100.)(cons 1 str)(cons 10 pt))) ) Quote
Lee Mac Posted February 19, 2011 Posted February 19, 2011 Example: [color=RED]([/color][color=BLUE]defun[/color] c:test [color=RED]([/color] [color=BLUE]/[/color] elist opt pt str ucsxdir ucsz [color=RED])[/color] [color=#990099];;---------------------------------------------;;[/color] [color=#990099];; Example © Lee Mac 2011 - www.lee-mac.com ;;[/color] [color=#990099];;---------------------------------------------;;[/color] [color=RED]([/color][color=BLUE]setq[/color] UCSZ [color=RED]([/color][color=BLUE]trans[/color] [color=DARKRED]'[/color][color=RED]([/color][color=#009999]0.[/color] [color=#009999]0.[/color] [color=#009999]1.[/color][color=RED])[/color] [color=#009900]1[/color] [color=#009900]0[/color] [color=BLUE]t[/color][color=RED])[/color] UCSXDIR [color=RED]([/color][color=BLUE]angle[/color] [color=DARKRED]'[/color][color=RED]([/color][color=#009999]0.[/color] [color=#009999]0.[/color] [color=#009999]0.[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]trans[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]UCSXDIR[color=RED])[/color] [color=#009900]0[/color] UCSZ [color=BLUE]t[/color][color=RED]))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]while[/color] [color=RED]([/color][color=BLUE]progn[/color] [color=RED]([/color][color=BLUE]initget[/color] [color=#a52a2a]"Text MText Undo"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] opt [color=RED]([/color][color=BLUE]getkword[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]"\nText or MText? [Text/MText"[/color] [color=RED]([/color][color=BLUE]if[/color] elist [color=#a52a2a]"/Undo"[/color] [color=#a52a2a]""[/color][color=RED])[/color] [color=#a52a2a]"] <Exit>: "[/color][color=RED])))[/color] [color=RED]([/color][color=BLUE]cond[/color] [color=RED]([/color] [color=RED]([/color][color=BLUE]eq[/color] [color=#a52a2a]"Undo"[/color] opt[color=RED])[/color] [color=RED]([/color][color=BLUE]if[/color] elist [color=RED]([/color][color=BLUE]progn[/color] [color=RED]([/color][color=BLUE]entdel[/color] [color=RED]([/color][color=BLUE]car[/color] elist[color=RED]))[/color] [color=RED]([/color][color=BLUE]setq[/color] elist [color=RED]([/color][color=BLUE]cdr[/color] elist[color=RED]))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color] [color=#a52a2a]"\n** Nothing to Undo **"[/color][color=RED])[/color] [color=RED])[/color] [color=BLUE]t[/color] [color=RED])[/color] [color=RED]([/color] [color=RED]([/color][color=BLUE]and[/color] opt [color=RED]([/color][color=BLUE]<[/color] [color=#009900]0[/color] [color=RED]([/color][color=BLUE]strlen[/color] [color=RED]([/color][color=BLUE]setq[/color] str [color=RED]([/color][color=BLUE]getstring[/color] [color=BLUE]t[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]"\nSpecify "[/color] opt [color=#a52a2a]" String: "[/color][color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] pt [color=RED]([/color][color=BLUE]getpoint[/color] [color=RED]([/color][color=BLUE]strcat[/color] [color=#a52a2a]"\nSpecify Point for "[/color] opt [color=#a52a2a]": "[/color][color=RED])))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]car[/color] [color=RED]([/color][color=BLUE]setq[/color] elist [color=RED]([/color][color=BLUE]cons[/color] [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]eq[/color] [color=#a52a2a]"Text"[/color] opt[color=RED])[/color] [color=RED]([/color][color=BLUE]entmakex[/color] [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"TEXT"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]10[/color] [color=RED]([/color][color=BLUE]trans[/color] pt [color=#009900]1[/color] UCSZ[color=RED]))[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]40[/color] [color=#009999]100.[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]1[/color] str[color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]50[/color] UCSXDIR[color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]210[/color] UCSZ[color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]entmakex[/color] [color=RED]([/color][color=BLUE]list[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]0[/color] [color=#a52a2a]"MTEXT"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbEntity"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]100[/color] [color=#a52a2a]"AcDbMText"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]10[/color] [color=RED]([/color][color=BLUE]trans[/color] pt [color=#009900]1[/color] [color=#009900]0[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]11[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]UCSXDIR[color=RED]))[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]40[/color] [color=#009999]100.[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]1[/color] str[color=RED])[/color] [color=RED]([/color][color=BLUE]cons[/color] [color=#009900]210[/color] UCSZ[color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] elist [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color] [color=RED])[/color] Quote
Michaels Posted February 20, 2011 Author Posted February 20, 2011 That's really wonderful Lee. Thank you soooooo much . Quote
Lee Mac Posted February 20, 2011 Posted February 20, 2011 You're welcome Michaels, hope you could learn something from it 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.