Jump to content

How to Undo command while my routine is running


Recommended Posts

Posted

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

Posted

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]

Posted

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)))
            )

Posted

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]

Posted

That's really wonderful Lee.

 

Thank you soooooo much .:)

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...