Jump to content

Pick a certain frozen or off layer to on or thawed


aharms33

Recommended Posts

I want to create a lisp where when I have a frozen or thawed layer that I want to be on when I don't know exactly what layer the object I want is on.

 

To clarify when I want a specific object to be on, I layon and laythw then xlist the object and then screenshot the dialog box then go through the layer manger and thaw/or layon the layer I wanted.

 

I was wondering if anyone could help me write a lisp routine that would help me save some time on this process.

 

Thanks,

Link to comment
Share on other sites

This lisp displays a DCL that shows what layers are off/frozen/locked

 

; Turn ON, Thaw ar Unlock layers
; Stefan M. - 04.06.2013
; Edited by Jonathan Norton

(defun C:LCON ( / *error* acDoc filen filew id l layers r c l_frz l_off l_lck selected_layers prop val)
 (vl-load-com)
 (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark acDoc)

 (defun *error* (m)
   (and
     m
     (not (wcmatch (strcase m) "*CANCEL*,*QUIT*"))
     (princ (strcat "\nError: " m))
     )
   (vla-endundomark acDoc)
   )
 
 (defun prompt_list ()
   (start_list "a_list")
   (mapcar
     'add_list
     (setq l (cond
               ((= "1" *tog1*) l_off)
               ((= "1" *tog2*) l_frz)
               ((= "1" *tog3*) l_lck)
               )
           )
     )
   (end_list)
   )

 (vlax-for la (setq layers (vla-get-layers acDoc))
   (if (eq (vla-get-LayerOn la) :vlax-false)
     (setq l_off (cons (vla-get-Name la) l_off))
     )
   (if (eq (vla-get-Freeze la) :vlax-true)
     (setq l_frz (cons (vla-get-Name la) l_frz))
     )
   (if (eq (vla-get-Lock la) :vlax-true)
     (setq l_lck (cons (vla-get-Name la) l_lck))
     )
   )
 (setq l_off (acad_strlsort l_off)
       l_frz (acad_strlsort l_frz)
       l_lck (acad_strlsort l_lck)
       )
 
 (if (or l_off l_frz l_lck) 
   (progn
     (setq filew (open (setq filen (strcat (getvar 'dwgprefix) "temp_layer_dialog.dcl")) "w"))
     (write-line
       "layer_on_dialog : dialog {
      label = \"Layer Control\";
      : column {
      : list_box { label = \"Select Layer:\"; key = \"a_list\"; width = 40; height = 15; multiple_select = true; allow_accept = true;}
      : radio_column {
      : radio_button { label = \"Off Layers\";    key = \"tog1\"; }
      : radio_button { label = \"Frozen Layers\"; key = \"tog2\"; }
      : radio_button { label = \"Locked Layers\"; key = \"tog3\"; }}
      ok_cancel;}}" filew)
     (close filew)
     (if
       (>= (setq id (load_dialog filen)) 0)
        (if
          (new_dialog "layer_on_dialog" id)
           (progn
             (or *tog1* (setq *tog1* "1"))
             (or *tog2* (setq *tog2* "0"))
             (or *tog3* (setq *tog3* "0"))
             (prompt_list)
             (action_tile "a_list" "(setq selected_layers $value)")
             (action_tile "tog1"   "(setq *tog1* \"1\" *tog2* \"0\" *tog3* \"0\" selected_layers nil) (prompt_list)")
             (action_tile "tog2"   "(setq *tog1* \"0\" *tog2* \"1\" *tog3* \"0\" selected_layers nil) (prompt_list)")
             (action_tile "tog3"   "(setq *tog1* \"0\" *tog2* \"0\" *tog3* \"1\" selected_layers nil) (prompt_list)")
             (set_tile "tog1" *tog1*)
             (set_tile "tog2" *tog2*)
             (set_tile "tog3" *tog3*)
             (mode_tile "tog1" (if l_off 0 1))
             (mode_tile "tog2" (if l_frz 0 1))
             (mode_tile "tog3" (if l_lck 0 1))
             (setq r (start_dialog))
             (unload_dialog id)
             )
           (princ "\nWrong dialog definition")
           )
        (princ "\nDCL file not found")
        )
     (if (findfile filen) (vl-file-delete filen))
     (if
       (and (= r 1) selected_layers)
        (progn
          (setq prop (cond
                       ((= "1" *tog1*) 'LayerON)
                       ((= "1" *tog2*) 'Freeze)
                       ((= "1" *tog3*) 'Lock)
                       )
                val  (cond
                       ((= "1" *tog1*) -1)
                       ((= "1" *tog2*) 0)
                       ((= "1" *tog3*) 0)
                       )
                )
          (foreach x (read (strcat "(" selected_layers ")"))
            (vlax-put (vla-item layers (nth x l)) prop val)
            )
          )
        )
     (vla-regen acDoc acActiveViewport)
     )
   (Alert "All Layers On/Active")
   )
 (*error* nil)
 (princ)
 )

  • Like 1
Link to comment
Share on other sites

The problem is aharms33 wants to turn on an object previously drawn and its turned off, so good idea Jonathonn3891 but you still dont know what layer I drew "part 1234" on.

 

Only way would be to attach xdata and use this and record items find the OBJECT xdata "Part 12345" and check layer on ? Maybe Regions.

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