A couple of things about the visibility, views and layers.
In this example I’m showing the case in which Layer visibility info is not sufficient to filter our Model Objects. I created this nested structure of Layers to group Block instances based on their Type.Subtype properties. As you can see in the video there is only info if the Layer visibility is On/Off, there is no info about Layers Parent visibility settings that also affects sublayers.
In Rhino.Inside.Revit there is a Visible in View Filter component, obviously in Revit every Element can be hidden in every View separately. This component doesn’t care if given Element is hidden due to turned off Category visibility in the Visibility Graphics settings, because of some Filters or if some Element is simply Hidden. So if it’s visible, it returns visible - easy.
Easy to understand RiR components
In Rhino you can check if Model Object is Visible, and get info that it is, but in reality it’s not, because the Layer that this Object lay on is turned off. As I mentioned earlier, the same confusion goes for the Layers/Sublayers.
So in Rhino, in the worst scenario, you can have a Model Object that has parameter Visible = True, and is on the Layer that has Visible = True, but in reality it’s invisible in the Viewport because some parent layer is turned off. Ok, maybe it’s not the worst, because on top of that this object can also be clipped out by the Clipping Plane…
All of that makes a very confusing system on top of which are built and developed very nice and handy Grasshopper components. It’s a bitter sweet situation.
Generally it would be much simpler if Rhino had per Model View visibility settings and not this division between Model Views and Detail Views where Detail Views are now more powerful but are not suited for the regular tasks.
PS
While working with the new Rhino Grasshopper components I found that there is too little info about layer hierarchy. Sure, I can receive it by converting layer to string and splitting text, but generally I feel lack of some outputs in the Model Layer component.