aharms33 Posted July 23, 2016 Posted July 23, 2016 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, Quote
BIGAL Posted July 25, 2016 Posted July 25, 2016 -LA ON * T * Pick object see what layer its on U U U U -la Quote
broncos15 Posted July 25, 2016 Posted July 25, 2016 This routine is pretty useful: http://cadtips.cadalyst.com/layer-properties/unhide-layers. Quote
jonathann3891 Posted July 25, 2016 Posted July 25, 2016 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) ) 1 Quote
BIGAL Posted July 26, 2016 Posted July 26, 2016 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. Quote
Recommended Posts
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.