Yes, the names “Symlink Layers” and “Mirror Layers” indicates the basic idea.
I often find myself mixing the concept of grouping curves and surfaces into separate layer groups (under separate root layers) and the concept of placing layers for helper curves and surfaces next to each other.
As I see it, there are two basic needs to be met regarding “helper layers”:
- Helper layers&lines needs to be easy to hide & show separately from the “final” surfaces/objects.
- Helper lines needs to be near at hand at all times while doing the actual drawing.
One approach to organizing helper lines is to group them under separate “root” layers, like so:
- Surfaces
- Curves
Shared structure - Organized like this, the “helpers” can easily be toggled Off and On, and also cleaned up with just one click. But this approach works best if the layer branches also share the same structure, as to make it easier to find helper curves that belongs to a specific surface layer.
Clumsy - But when a layer structure becomes deep, it also becomes inconvenient to jump between the curve & surface structures due to the UI distance between them. Which leads to helper curve layers being inserted also in the part of the layer structure containing the “final” drawing objects. Thus ending up with layers “littering” the model. Not good.
Classic File Structure Problem
The problem with Layer structures is essentially the same problem as with ol’time file structures on disk; You can place and find a file or folder only in one place in one single structure.
This means that although a file belongs to a certain basic category (represented by its location in the file structure), it may also belong to another category (or structure). For this reason many Operating Systems offer “Symlinks” that can provide multiple references to the one “physical” file/folder, and so one can access a specific file or folder from many places.
Symlink Layers
In a similar way Symlink Layers in Rhino could provide a solution for organizing Layers in a basic structure serving one purpose, while assigning references (Symlink Layers) to those “true” layers from anywhere else in the layer structure as to provide easy access.
Mirror Layers
Another approach, although not as generic as Symlink Layers, would be to have the option of defining any existing Layer (anywhere in a structure) as a “root” of a “master structure”, and from then on Rhino would automatically create a parallel “Mirror Structure” of layers reflecting this Master Layer structure.
The two layer structures would both be “true” layers (not “Symlink Layers”), and the two layer structures would always stay in sync regarding their Structure and the Names. Rules:
-
Addition - Adding a layer in the Master structure would add a layer with the same name to the Mirror structure, but adding a layer in the Mirror structure would not add a similar layer to the master structure (mirror/helper layers OTOH would be allowed to have non-synced sub layers ).
-
Root Names - Only the names of the “root layers” would be different between the master and the mirror layer structures (if the two are on the same layer level).
-
Renaming - Renaming one layer would rename the co-layer in the Mirror or Master.
-
Deletion - If deleting a master layer, also its mirror/slave layer is deleted (but not the other way around).
-
Assigning objects - Assigning an object to a Symlink Layer would add the object to the “true” (mirror/helper) Layer.
-
Attributes - Modifying attributes (color, material etc) to a Symlink Layer would apply the changes to the “true” (mirror/helper) Layer as well (two-way).
-
Display - Visibility of the two structures would be separated so that they can be toggled On and Off separately. Symlinks OTOH would behave like Block references - hiding the “true” helper layer/original Block also hides it’s “instances” (symlinks). Hiding a Symlink layer would hide the layer, but Show Layer would show the layer only if the “true” layer is visible (enabling to hide the entire helper/mirror structure at its root).
Both
In the best of worlds Rhino would support both Symlink Layers
and Mirror Layers
(or Co Layers, or Helper Layers or whatever suitable name). Any or both approaches would help immensely in organizing projects.
Now, waddayathink?
// Rolf