Jump to content
clint0577

Layer Create or Set Current if already existing

Recommended Posts

clint0577

I have a routine that I've been using but I would like to modify it just a bit. The function is for creating Deed Sketches that allows the user to create a new layer and select a color. It works great but if you happen to exit the command, and need to start again, it still asks for a new layer. I would like to change the code to have the option to first, USE THE CURRENT LAYER. If not then I would have the option I already have, which is to create the new layer but then I need to, if that layer already exists, set it to current. Here is that portion of the code. I've tried tons of different ways but I know just enough about lisp routines to get myself into trouble.

 

;main program

(DEFUN C:deed ()

 

(while

(or

(not (snvalid (setq name (getstring t "\nSpecify Layer Name: "))))

(tblsearch "LAYER" name)

)

(princ "\nLayer Name Invalid or Already Exists.")

)

(if (setq color (acad_colordlg 7 nil))

(entmake

(list

(cons 0 "LAYER")

(cons 100 "AcDbSymbolTableRecord")

(cons 100 "AcDbLayerTableRecord")

(cons 2 name)

(cons 70 0)

(cons 62 color)

)

)

)

(command "layer" "s" NAME "")

Share this post


Link to post
Share on other sites
giskumar

Hi,

 

Modify While loop as below.

This will checks the layer name for vlididty. It it is a valid layer then checks weather it already exists or Not.

If the layer exists sets the layer as current layer.

I hopes this works for you.

 

 

(DEFUN C:deed ()

(setq newlayer T)
(while (not (setq name (getstring t "\nSpecify Layer Name: ")))
(if (tblsearch "LAYER" name)
 (progn (command "Layer" "S" name "") (setq newlayer nil))
 (princ "\nLayer Name Invalid.")
 )
 )

(if newlayer
 (progn
   (if (setq color (acad_colordlg 7 nil))
     (entmake
(list
  (cons 0 "LAYER")
  (cons 100 "AcDbSymbolTableRecord")
  (cons 100 "AcDbLayerTableRecord")
  (cons 2 name)
  (cons 70 0)
  (cons 62 color)
  )
)
     )
   (command "layer" "s" NAME "")
   )
 )
)

Share this post


Link to post
Share on other sites
Dadgad

Welcome to the forum. :)

 

What you are trying to do, while not exactly the same,

brings to mind one of my very favorite lisps, which runs nonstop on my machines.

That is Lee Mac's LAYER DIRECTOR.

Thanks Lee! :beer:

 

Everybody should use this lisp, it is simply brilliant, and very easily modified to suit personal needs,

even by those who are lisp-challenged, like myself.

This is but one of a great many wonderful lisps generously made available

on Lee's site. Do yourself a favor, check them out. :thumbsup:

Edited by Dadgad

Share this post


Link to post
Share on other sites
Lee Mac

Wow - thanks Dadgad!

Share this post


Link to post
Share on other sites
clint0577

This works Giskumar but if the layer exists, it still promps me for a color.

Edited by clint0577

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