Jump to content

Exit from (while...


GP_

Recommended Posts

Hi,

I can exit with ESC, but not very elegant.

How to exit with right click?

 

Thanks.

 

 

[color=red]([/color][color=blue]defun[/color] [color=black]c:Test1[/color] [color=red]([/color][color=blue]/[/color][color=black] i [/color][color=red])[/color]
   [color=red]([/color][color=blue]if[/color] [color=red]([/color][color=blue]setq[/color] i [color=red]([/color][color=blue]getint[/color] [color=#a52a2a]"\nSpecify start number: "[/color][color=red]))[/color]
       [color=red]([/color][color=blue]while[/color] 
           [color=red]([/color][color=blue]entmake[/color] [color=darkred]'[/color][color=red](([/color][color=#009900]0[/color] [color=darkred].[/color] [color=#a52a2a]"BLOCK"[/color][color=red])([/color][color=#009900]2[/color] [color=darkred].[/color] [color=#a52a2a]"TT"[/color][color=red])([/color][color=#009900]70[/color] [color=darkred].[/color] [color=#009900]0[/color][color=red])([/color][color=#009900]10[/color] [color=#009999]0.0[/color] [color=#009999]0.0[/color] [color=#009999]0.0[/color][color=red])))[/color]
           [color=red]([/color][color=blue]entmake[/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]8[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"clayer"[/color][color=red]))[/color]
                   [color=red]([/color][color=blue]cons[/color] [color=#009900]7[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"textstyle"[/color][color=red]))[/color]
                   [color=red]([/color][color=blue]cons[/color] [color=#009900]10[/color] [color=darkred]'[/color][color=red]([/color][color=#009999]0.0[/color] [color=#009999]0.0[/color][color=red]))[/color]
                   [color=red]([/color][color=blue]cons[/color] [color=#009900]40[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"textsize"[/color][color=red]))[/color]
                   [color=red]([/color][color=blue]cons[/color] [color=#009900]1[/color] [color=red]([/color][color=blue]itoa[/color] i[color=red]))[/color] 
               [color=red])[/color]
           [color=red])[/color]
           [color=red]([/color][color=blue]entmake[/color] [color=darkred]'[/color][color=red](([/color][color=#009900]0[/color] [color=darkred].[/color] [color=#a52a2a]"ENDBLK"[/color][color=red])))[/color]
           [color=red]([/color][color=blue]prompt[/color] [color=#a52a2a]"\nInsertion Point:"[/color] [color=red])[/color]
           [color=red]([/color][color=blue]command[/color] [color=#a52a2a]"_-INSERT"[/color] [color=#a52a2a]"TT"[/color] [color=black]pause[/color] [color=#a52a2a]"1"[/color] [color=#a52a2a]"1"[/color] [color=#a52a2a]"0"[/color][color=red])[/color]
           [color=red]([/color][color=blue]command[/color] [color=#a52a2a]"_explode"[/color] [color=red]([/color][color=blue]entlast[/color][color=red]))[/color]
           [color=red]([/color][color=blue]setq[/color] i [color=red]([/color][color=blue]1+[/color] i[color=red]))[/color]

       [color=red])[/color]
       [color=red]([/color][color=blue]princ[/color][color=red])[/color]
   [color=red])[/color]
   [color=red]([/color][color=blue]princ[/color][color=red])[/color]
[color=red])[/color]

 

 

[color=red]([/color][color=blue]defun[/color] [color=black]c:Test2[/color] [color=red]([/color][color=blue]/[/color] i TT [color=red])[/color]
   [color=red]([/color][color=blue]if[/color] [color=red]([/color][color=blue]setq[/color] i [color=red]([/color][color=blue]getint[/color] [color=#a52a2a]"\nSpecify start number: "[/color][color=red]))[/color]
       [color=red]([/color][color=blue]while[/color]
           [color=red]([/color][color=blue]setq[/color] TT
               [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]8[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"clayer"[/color][color=red]))[/color]
                       [color=red]([/color][color=blue]cons[/color] [color=#009900]7[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"textstyle"[/color][color=red]))[/color]
                       [color=red]([/color][color=blue]cons[/color] [color=#009900]10[/color] [color=darkred]'[/color][color=red]([/color][color=#009999]0.0[/color] [color=#009999]0.0[/color][color=red]))[/color]
                       [color=red]([/color][color=blue]cons[/color] [color=#009900]40[/color] [color=red]([/color][color=blue]getvar[/color] [color=#a52a2a]"textsize"[/color][color=red]))[/color]
                       [color=red]([/color][color=blue]cons[/color] [color=#009900]1[/color] [color=red]([/color][color=blue]itoa[/color] i[color=red]))[/color] 
                   [color=red])[/color]
               [color=red])[/color]
           [color=red])[/color]
           [color=red]([/color][color=blue]prompt[/color] [color=#a52a2a]"\nInsertion Point:"[/color] [color=red])[/color]
           [color=red]([/color][color=blue]command[/color] [color=#a52a2a]"_cutclip"[/color] TT [color=#a52a2a]""[/color] [color=#a52a2a]"_pasteclip"[/color] [color=black]pause[/color][color=red])[/color]  
           [color=red]([/color][color=blue]setq[/color] i [color=red]([/color][color=blue]1+[/color] i[color=red]))[/color]
       [color=red])[/color]
       [color=red]([/color][color=blue]princ[/color][color=red])[/color]
   [color=red])[/color]
   [color=red]([/color][color=blue]princ[/color][color=red])[/color]
[color=red])[/color]

Link to comment
Share on other sites

I think the grread function is the right choice in this issue :)

 

Try it GP

 

(defun c:Test (/ i gr p v)
;;;;; Tharwat 21. July. 2012 ;;;;
 (defun _Text ( i )
   (entmakex (list (cons 0 "TEXT")
           (cons 8 (getvar "clayer"))
           (cons 7 (getvar "textstyle"))
           (cons 10 '(0. 0. 0.))
           (cons 40 (getvar "textsize"))
           (cons 1 (itoa i))
         )
   )
 )
 (if (setq i (getint "\r Specify start number: "))
   (progn
     (setq v (_Text i))
     (while
   (or (eq (car (setq gr (grread t 15 0))) 5)
       (eq (car gr) 3)
   )
    (redraw)
    (entmod
      (subst (cons 10 (cadr gr)) (assoc 10 (entget v)) (entget v))
    )
    (if (eq (car gr) 3)
      (setq v (_Text (setq i (1+ i))))
    )
     )
   )
   (princ)
 )
 (if (eq (car gr) 25)
   (entdel v)
 )
 (princ)
)

Link to comment
Share on other sites

Read this thread in Swamp , it's very precious and I am sure that you could handle it by your self . ;)

 

Wonderful

Thank you

Link to comment
Share on other sites

To my knowledge, you cannot exit using right-click whilst the -insert command takes focus, since your program cannot detect the user input issued to the -insert command.

 

However, here is an alternative method to exit using Esc:

 

([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] c e i )
   ([color=BLUE]setq[/color] c ([color=BLUE]getvar[/color] 'cmdecho))
   ([color=BLUE]setvar[/color] 'cmdecho 0)
   ([color=BLUE]if[/color] ([color=BLUE]setq[/color] i ([color=BLUE]getint[/color] [color=MAROON]"\nSpecify Start Number: "[/color]))
       ([color=BLUE]progn[/color]
           ([color=BLUE]while[/color]
               ([color=BLUE]progn[/color]
                   ([color=BLUE]entmake[/color] '((0 . [color=MAROON]"BLOCK"[/color]) (2 . [color=MAROON]"TT"[/color]) (70 . 0) (10 0.0 0.0 0.0)))
                   ([color=BLUE]entmake[/color]
                       ([color=BLUE]list[/color]
                          '(0 . [color=MAROON]"TEXT"[/color])
                           ([color=BLUE]cons[/color] 8 ([color=BLUE]getvar[/color] 'clayer))
                           ([color=BLUE]cons[/color] 7 ([color=BLUE]getvar[/color] 'textstyle))
                          '(10 0.0 0.0 0.0)
                           ([color=BLUE]cons[/color] 40 ([color=BLUE]getvar[/color] 'textsize))
                           ([color=BLUE]cons[/color] 1 ([color=BLUE]itoa[/color] i))
                       )
                   )
                   ([color=BLUE]entmake[/color] '((0 . [color=MAROON]"ENDBLK"[/color])))
                   ([color=BLUE]princ[/color] [color=MAROON]"\nInsertion Point [Esc to Exit]: "[/color])
                   ([color=BLUE]setq[/color] e ([color=BLUE]entlast[/color]))
                   ([color=BLUE]if[/color]
                       ([color=BLUE]and[/color]
                           ([color=BLUE]vl-cmdf[/color] [color=MAROON]"_.-insert"[/color] [color=MAROON]"TT"[/color] [color=BLUE]pause[/color] 1.0 1.0 0.0)
                           ([color=BLUE]not[/color] ([color=BLUE]eq[/color] e ([color=BLUE]setq[/color] e ([color=BLUE]entlast[/color]))))
                       )
                       ([color=BLUE]progn[/color]
                           ([color=BLUE]command[/color] [color=MAROON]"_.explode"[/color] e)
                           ([color=BLUE]setq[/color] i ([color=BLUE]1+[/color] i))
                       )
                   )
               )
           )
           ([color=BLUE]princ[/color] [color=MAROON]"\nExit Program."[/color]) [color=GREEN];; To show program has not errored[/color]
       )
   )
   ([color=BLUE]setvar[/color] 'cmdecho c)
   ([color=BLUE]princ[/color])
)

Note that this method will not cause the program to error, as demonstrated by the message printed on exit.

Link to comment
Share on other sites

...you cannot exit using right-click whilst the -insert command takes focus...

 

If you say so I think that it can not be belied. :)

 

Thanks for the code.

Link to comment
Share on other sites

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