Jump to content
Erickson1026

Poly lines in lisp

Recommended Posts

Erickson1026

Hello all,

Somewhat new at using lisp for a very specific function.

Here's the issue, I have a lisp routine that needs to save a layerstate, set a specif ic layer current, lock the others, then run the poly line command, exit the pline command, then reset back to the original layer state after running the pline command. Here's the code so far.

 

The pline is erroring out before I get to the layer state which are still being developed.

 

So main question, can I get the pline command to work properly first.

 

LOA.LSP	2012 by David W. Erickson
;;;  DESCRIPTION
;;;
;;;  This function turns on a-wall-e layer and locks all non Ioffice layers, sets io-area-indv current and starts the polyline command.

(DEFUN C:LOA  (/ LAYER OFF )
(COMMAND "-LAYER" "A" "S" "DAVE" "" "" "" "" )
   	(SETQ pT1 (GETPOINT "\nSelect the 1st POINT. "))
(command "-layer" "fr" "*" "th" "io*" "th" "a-*-e" "lo" "*" "unlock" "io*" "set" "io-area-indv" "fr" "a-anno*" "th" "_close_door" "u" "_close_door" "off" "a-door-e" "OFF" "A-FLOR-STRS-E" "OFF" "IO-SEC-SPCS" "OFF" "A-EQPM-E" "")
(command "pline" pt1 pause )
(COMMAND "-LA" "A" "R" "DAVE" "" "" "" )
(COMMAND "-LA" "A" "D" "DAVE" "" "" "" )
(princ)
)

 

Thanks in advance.

 

Dave

Edited by Erickson1026

Share this post


Link to post
Share on other sites
MSasu

Please try this to dinamically draw the polyline (I didn't checked the rest of the code):

(command "_PLINE")
(while (> (getvar "CMDACTIVE") 0)
(command pause)
)

Please edit your post and add code tags. Thank you.

Share this post


Link to post
Share on other sites
Erickson1026

Revised Code below. I am getting closer. Thanks for the tips and hopefully I wrapped the code appropriately. It works to set the layer and draw the polyline but before I can pick the first point, the "command line dialog" comes and asks to pick the first point, which then requires an additional (2) picks in the drawing editor to initiate the pline. Something simple perhaps.

 

 

LOA.LSP	2012 by David W. Erickson
;;; DESCRIPTION
;;;
;;; This function turns on a-wall-e layer and locks all non Ioffice layers, sets io-area-indv current and starts the polyline command.

(DEFUN C:LOA (/ LAYER OFF )
(COMMAND "-LAYER" "A" "S" "DAVE" "" "")
(SETQ pT1 (GETPOINT "\nSelect the 1st POINT. "))
(command "-layer" "fr" "*" "th" "io*" "th" "a-*-e" "lo" "*" "unlock" "io*" "set" "io-area-indv" "fr" "a-anno*" "th" "_close_door" "u" "_close_door" "off" "a-door-e" "OFF" "A-FLOR-STRS-E" "OFF" "IO-SEC-SPCS" "OFF" "A-EQPM-E" "")
(command "_PLINE")
(while (> (getvar "CMDACTIVE") 0)
(command pause)
(COMMAND "-LAYER" "A" "R" "DAVE" "" "" "")
(COMMAND "-LAYER" "A" "D" "DAVE" "" "")
(princ)
)

Edited by Erickson1026

Share this post


Link to post
Share on other sites
MSasu

Seems that you missed the closing paranthesis for WHILE.

(command "_PLINE")
(while (> (getvar "CMDACTIVE") 0)
  (command pause)
[color=red])[/color]

Again, please edit your both posts and add code tags.

Share this post


Link to post
Share on other sites
Erickson1026

Thanks for that. Figured out code tags this time. Still no luck with extra command line dialog window popping up and extra mouse clicks required to start command.

 

LOA.LSP	2012 by David W. Erickson
;;; DESCRIPTION
;;;
;;; This function turns on a-wall-e layer and locks all non Ioffice layers, sets io-area-indv current and starts the polyline command.

(DEFUN C:LOA (/ LAYER OFF )
(COMMAND "-LAYER" "A" "S" "DAVE" "" "" "" "")
(SETQ pT1 (GETPOINT "\nSelect the 1st POINT. "))
(command "-layer" "fr" "*" "th" "io*" "th" "a-*-e" "lo" "*" "unlock" "io*" "set" "io-area-indv" "fr" "a-anno*" "th" "_close_door" "u" "_close_door" "off" "a-door-e" "OFF" "A-FLOR-STRS-E" "OFF" "IO-SEC-SPCS" "OFF" "A-EQPM-E" "")
(command "_PLINE")
(while (> (getvar "CMDACTIVE") 0)
(command pause)
)
(COMMAND "-LAYER" "A" "R" "DAVE" "" "" "")
(COMMAND "-LAYER" "A" "D" "DAVE" "" "")
(princ)
)

Share this post


Link to post
Share on other sites
MSasu

Just noticed that earlier in the code you are asking for a point input; maybe the code should look like:

 (command "_PLINE" [color=magenta]pT1[/color])
(while (> (getvar "CMDACTIVE") 0)
(command pause)
) 

If it still doesn’t work as expected, then please post here the drawing you will use it in (without content, only for layers three) to test the rest of the code.

Thank you for edit the first posts, it looks much better now.

Share this post


Link to post
Share on other sites
Erickson1026

That worked! Your patience and assistance is much appreciated. This routine will be great to work with for months to come!

 

Thanks a million and take care.

 

David

Share this post


Link to post
Share on other sites
MSasu

Glad to hear that is solved now. You're entirely welcome, David!

Share this post


Link to post
Share on other sites
Erickson1026

I actually had to modify it a bit more this morning after getting to work. The previous version worked well the first time through, but then if I ran it again, I was hit with the F2 screen and had to re-pick on the screen to begin the polyline. I added the graphscr commands at a few spots to supress the screen and keep rolling through.

 

Again, thanks for your help.

 

 
;;;LOA.LSP 2012 by David W. Erickson
;;; DESCRIPTION
;;;
;;; This function turns on a-wall-e layer and locks all non Ioffice layers, sets io-area-indv current and starts the polyline command.
(DEFUN C:LOA (/ LAYER OFF )
(COMMAND "-LAYER" "A" "S" "DAVE" "" "" "" "")
(GRAPHSCR)
(SETQ pT1 (GETPOINT "\nSelect the 1st POINT. "))
(GRAPHSCR)
(command "-layer" "fr" "*" "th" "io*" "th" "a-*-e" "lo" "*" "unlock" "io*" "set" "io-area-indv" "fr" "a-anno*" "th" "_close_door" "u" "_close_door" "off" "a-door-e" "OFF" "A-FLOR-STRS-E" "OFF" "IO-SEC-SPCS" "OFF" "A-EQPM-E" "")
(command "_PLINE" pt1)
(while (> (getvar "CMDACTIVE") 0)
(command pause)
)
(GRAPHSCR)
(COMMAND "-LAYER" "A" "R" "DAVE" "" "" "")
(COMMAND "-LAYER" "A" "D" "DAVE" "" "")
(GRAPHSCR)
(princ)
)

Share this post


Link to post
Share on other sites
MSasu

Try to call the LAYER command like this:

(COMMAND "[color=red]_[/color]LAYER" "[color=red]_[/color]A" "[color=red]_[/color]S" "DAVE" "" "" "" "")

Share this post


Link to post
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
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

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