Jump to content

"select all layers" command?


Recommended Posts

hi,

 

i'd like to create a macro that selects all layers and converts the VP color to black. basically i receive a ton of drawings from different sources (with different layers/layer names), and i'd like to have a quick way of changing a viewport so that everything in it is black and white, but the title block is still full color. is there an easy way to do this?

 

also is this something i could apply to a template so that a particular viewport automatically converts everything in it to black?

 

thanks

Link to comment
Share on other sites

If the dwg's are set to color by layer then easy just use a lisp to go through the layer table and set all to a color then reset your title block layers to colour use a CTB so it works every time, also if needed then do a set all objects to Bylayer first.

Link to comment
Share on other sites

  • 2 weeks later...

This macro sets all the layers to colour 7 (substitute whatever colour you require by changing that number):

 

-layer;Color;7;*;;

 

You would then simply consider whether to run this macro on the dwg before you import into your title block file, or add to the macro so that it changes your title block layers back to the colours you are after.

Link to comment
Share on other sites

Sorry I just noticed you want the VP colours changed only. My solution won't do that for you. I'll look into it further.

Link to comment
Share on other sites

Okay try this:

 

Tilemode;0;mspace;vplayer;Color;7;*;Current;;

 

Notes:

1. I had to use tilemode to move to a layout tab as this macro would fail in the model tab.

2. I had to also use mspace command to get into the model space through a viewport. It seemed to affect the paperspace also if I selected All from the paperspace rather than Current from the model space.

3. If there were multiple layout tabs and viewports needing this macro in each dwg then you could play around with that final option, pausing to manually select a viewport, or changing all then adding into the end of the macro the commands to then change paperspace back to how you want it...

Link to comment
Share on other sites

FWIW - Simply issuing MSPACE does not determine which PViewport (if multiple) to activate prior to changing all VPLayers to 'black/white'... Since you're specifying "current" in lieu of "all" in your VPLAYER options, I'd think it prudent to first determine if a PViewport is active.

 

Consider this adaptation:

 

(defun c:VpLayBlack () (c:ViewportLayersBlack))
(defun c:ViewportLayersBlack (/ *error*)
 (princ "\rVIEWPORTLAYERSBLACK ")

 (defun *error* (msg)
   (and oldCmdecho (setvar 'cmdecho oldCmdecho))
   (cond ((not msg))                                                   ; Normal exit
         ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
         ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
   )
   (princ)
 )

 (if (= 1 (getvar 'tilemode))
   (prompt "\n** Command not allowed in Model tab ** ")
   (if (= 1 (getvar 'cvport))
     (prompt "\n** Viewport must be active ** ")
     (progn
       (setq oldCmdecho (getvar 'cmdecho))
       (setvar 'cmdecho 0)
       (command "._vplayer" "color" 7 "*" "current" "")
     )
   )
 )
 (*error* nil)
)

 

... And the associated macro, in kind:

^C^C^PViewportLayersBlack ^P

Link to comment
Share on other sites

Good pick up Black Box. I had a feeling in back of my mind that this might still fail with added complexities like multiple viewports.

 

If the OP can use LISP then it's problem comprehensively solved.

 

If it's LT and only macros, then perhaps a compromise is to strip back the macro and run it by activitaing each viewport required individually before clicking the macro each time. In that case the macro would be:

 

vplayer;Color;7;*;Current;;

Link to comment
Share on other sites

Good pick up Black Box.

 

That is kind of you to say, YZ :beer:

 

... I had a feeling in back of my mind that this might still fail with added complexities like multiple viewports.

 

If the OP can use LISP then it's problem comprehensively solved.

 

If it's LT and only macros, then perhaps a compromise is to strip back the macro and run it by activitaing each viewport required individually before clicking the macro each time. In that case the macro would be:

 

vplayer;Color;7;*;Current;;

 

Good point, YZ. :thumbsup:

 

I only have what the OP lists as their 'using' version to go off of, and that's not always up to date.

 

In any event, if others are relegated to using LT, then obviously the LISP will not suffice... However, to the point of applying to multiple PViewports, it's actually simpler, as one simply replaces the "current" option, with "all." :thumbsup:

 

^C^C^P"._vplayer" "color" 7 "*" "[color="red"]all[/color]" "" ^P

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