Jump to content

Looped -Insert Command


Recommended Posts

Posted

Hi again,

Looking to create a lisp that will bring a block into a drawing and will loop and keep adding it. The catch is that I want to see the visual of the block similar to the -insert command. So I managed to achieve the visual by adding the pause. But how do I make the while loop keep going without the getpoint? Is there a way I could check for pause?

 

Thanks again

 

(while (setq ins (getpoint "\nSpecify point for block (ENTER to exit): "))
	(command "-INSERT" GV-Block pause "" "" "0")
)

 

Posted

I think I solved it. Is this the most optimal way?

(while continue
	(command "-INSERT" GV-Block pause "" "" "0")
	(if (= (getvar "CMDSTAT") 0)
	(setq continue nil)
	)
)

 

Posted
1 hour ago, CivilTechSource said:

I think I solved it. Is this the most optimal way?

(while continue
	(command "-INSERT" GV-Block pause "" "" "0")
	(if (= (getvar "CMDSTAT") 0)
	(setq continue nil)
	)
)

 

@CivilTechSource  

Quote

Command: CMDSTAT
Unknown command "CMDSTAT".  Press F1 for help.
 

 

Posted (edited)

If it is just a stand alone action, this will work but you have to escape out of it to cancel - you cannot have more to the routine, so stand alone only

 

(while (= (command "-INSERT" GV-Block pause "" "" "0") nil) )

 

 

or this

 

(while (setq pt1 (getpoint "Press LH Mouse to repeat, Enter / Space cancel"))
    (= (command "-insert" "circuitBreaker" pause 1 1 0) nil)
)

 

Edited by Steven P
  • Thanks 1
Posted

Depending on your version of CAD, you can use this:

(defun c:test ( )
    (command "_.-insert" "yourblockname" "_s" 1 "_r" 0 "_re" "_y")
    (while (= 1 (logand 1 (getvar 'cmdactive))) (command "\\"))
    (princ)
)

 

  • Like 1
  • Thanks 1
Posted

So the first line keeps doing the loop while it is not nil? How will it know it is not nil?

 

On 19/10/2025 at 16:37, Steven P said:

If it is just a stand alone action, this will work but you have to escape out of it to cancel - you cannot have more to the routine, so stand alone only

 

(while (= (command "-INSERT" GV-Block pause "" "" "0") nil) )

 

 

or this

 

(while (setq pt1 (getpoint "Press LH Mouse to repeat, Enter / Space cancel"))
    (= (command "-insert" "circuitBreaker" pause 1 1 0) nil)
)

 

Posted

I am still new with Lisp, but it feels that this is more elegant by checking if a command is active?

On 20/10/2025 at 08:45, Lee Mac said:

Depending on your version of CAD, you can use this:

(defun c:test ( )
    (command "_.-insert" "yourblockname" "_s" 1 "_r" 0 "_re" "_y")
    (while (= 1 (logand 1 (getvar 'cmdactive))) (command "\\"))
    (princ)
)

 

Posted
16 minutes ago, CivilTechSource said:

So the first line keeps doing the loop while it is not nil? How will it know it is not nil?

 

It won't - it will continue indefinitely until the user presses Esc to force it to exit.

  • Like 1
Posted
14 minutes ago, CivilTechSource said:

I am still new with Lisp, but it feels that this is more elegant by checking if a command is active?

 

If you need more information, check the documentation on the CMDACTIVE system variable.

  • Like 1
Posted
59 minutes ago, CivilTechSource said:

So the first line keeps doing the loop while it is not nil? How will it know it is not nil?

 

 

As Lee says, it doesn't know, it is a bit of a blunt LISP that does the job and no more. Lees is much better but I had a mental block yesterday, couldn't remember cmdactive.

Posted

For completeness, the key here is the "Repeat" option of the -INSERT command - though, I'm unsure in which version this relatively new keyword was introduced.

  • Like 1

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