Steven’s Guide to Managing Layer Visibility in Rhino Design Documentation

Rhino is more and more advantageous as a primary design AND drafting solution. (Rhino Forum “does anyone use as primary app”, …). Advances in Rhino modeling and Grasshopper have made Rhino more and more attractive, at the same time that major, big-budget architectural firms are increasingly frustrated with the established players (Dezeen). That being said, there are difficult sticking points, including managing layer visibility in 2d drawings (aka layouts & details). Hopefully these methods are easily adaptable for your application, the principles should be applicable to architecture, exhibit design, etc.

HideLayerInDetail: the obvious method

It’s the first method you learn about, but it also has a major downfall: if you create a new layer, it will be visible in ALLLLLLLL of your details. The only way to turn it off in all of them (that I know of) is to double-click into each of them and run HideInDetail (or use the layer palette). Extremely annoying :*(

Method 1: Print Width

EDIT 2022-08-04: I don’t recommend Method 1. The main pitfall is that Layout Layer visibility AND Detail Layer visibility must be changed for each layer you wish to change visibility for. This leads to 2x the number of clicks for each layer you wish to edit. I believe this is a bug in Rhino, but I’m not sure. Either way, I no longer recommend this method.

Controlling Layer visibility with Print Width

By using the Layer Print Width, you have the opportunity to keep a layer off in all existing details / layouts by default. Downsides of the Print Width method:

  • The most annoying thing: print-display does not show actual printed lines: layers that are on in the detail but not in the layout will appear in Rhino but not in the output PDF :*/
  • Layers will still be visible when you double-click into a detail, I haven’t found a workaround to this limitation, but it hasn’t been a dealbreaker for me
  • More tedious to maintain consistent linewidths between drawings
  • … haven’t figured out any other issues, maybe you know of some?

Here’s how to use the method, for a few situations:

Layer visible in most details

Print Color = black or gray – whichever will be used most commonly
Print Width = as desired
Layout/Detail print widths = No Print or custom, as appropriate. If you want to turn a layer off in all details on a layout, use the layout override instead of the detail. It will allow you to turn off the layer in all details on that layout.
No overrides for layout or detail color, except where needed

Layer off in most details

Print Color = black or gray – whichever will be used most commonly
Print Width = No Print
Layout/Detail print widths = set override per-detail, as appropriate. Ensure that you set both Layout and Detail print width, setting one and not the other will have no effect. Set detail print width as desired, and set Layout print width to Default
No overrides for layout or detail color, except where needed

Layers on in ONE detail

Print Width method works, but the built in Layer on in this Detail Only feature is easiest:

Duplicate Existing Layer?

If you’re creating a new layer that is similar to others: consider duplicating an existing layer rather than creating new ones from scratch.

Method 2: Standard methods + Scripts

I’d almost given up on the standard Rhino methods of controlling detail visibility (Rhino 7 help), but then I discovered the two scripts on this Rhino forum (as of this writing, there are 2 scripts: one by egdivad and the other by Lahos). After a small amount of testing, it seems possible to use standard Rhino methods in conjunction with these scripts to make everything wonderful and easy as puppies and butterflies. I hope to update this post once I find out.

Edit 2022-08-04: the SafeLayout plugin is a higher performing version of the scripts mentioned above. I believe this plugin is written in C, and so is much faster than the Python scripts.

Other potential controls:

These other methods offer some additional control / potential, but I haven’t personally found them to be game changers in regards to this challenge:

  • Set individual object to NoPrint using SV Script “SV_NoPrint.py”
  • “ShowHideinDetailPlusV5.tb” > via this Rhino forum post. Have not used a lot but could have some utility. Use with caution…
  • HideLayerInLayoutDetails.py and ShowLayerInLayoutDetails.py from the same forum post. I’ve tested these briefly and they are a bit clunky to use, but some people may find them useful.