Closing Block Definition Layer, whitout closing all instances?

Hi
I just started trying to work with block instances
I need to experiment with a new sail design, meaning lots of different positions with the same sail form.
It is super useful to use block instances, so that any changes to the instance is updated in all positions.

My logic says , that if I make the “original” instance (Parent ?) in a layer, and then copy this instance to other layers and move it around, it is intuitive that any changes to the “original” updates to the others.

so far so good…

But when I close the “Original” layer, all other instances disappear too, even their layers are open ?

That I cant get my head around… How do I keep the “original” in a layer , so that I can hide it, and only see the copied instances?

Or… if Blocks is not meant to work in layer “logic” , please tell me how to do similar?
I do not want to delete the “original”, since that is my reference for any adjustments…

Thanks Hans Henrik

Hej Hans Henrik -
There are two things that you need to keep separated when working with blocks: the definition and the instance.

When you create an object and then turn that into a block, you create both the definition and place an instance of it. The object’s layer will be in the definition. The instance will be on the layer that is active.
You can place different instances on different layers. Or, select and instance and move it to a different layer. What that layer is turned off, the block disappears - but only the instance that was on that specific layer.

With the instance layer turned ON, when turning off the layer that the original object was on (the object and layer this is in the definition), the block will also disappear - in this case, any instance on any layer will disappear.

Does that help?
-wim

I understand that when creating a definition, the definition itself is invisible.
And this invisible definition will be sitting on the layer that was active, when it was created.

I also understand that any instances can be moved to another layer, can be copyed, moved around, rotated etc.

The only thing I really do not understand is the workflow If I want to make changes or adjustments to the definition.

So far I understand I have to actually create a new geometry, and THEN make that a new definition, replacing the old one, using the same name.

And when I do that, preferably in a layer specifically for definitions - I create a new instance on that layer, which I then have to delete, If I do not want to “see” that layer

Is there not a more intuitive way to adjust the definition?
Like when I use “History” to update a NetworkSurface, by simple nudging the Curves that defines the Surface?

Hi Hans - history does not propgate into the definition once a block has been created, as far as I can see - this is what I think I would do:

Put all your curves on some layer. Layer A
Make another layer active. LayerB
Create your surface.
Make another layer active, Layer C
Create the block with curves and surface. The resulting instance will be on Layer C, the definitions curves on layer A and the surface on Layer B, which you can control independently for visibility.

Now BlockEdit an instance. Delete the surface, modify the curves, make a new surface from the curves and then exit the BlockEdit. Make sure the active layer is the surface one - you can fix it if not but it will be easier.

-Pascal

From a human interface point of view this has been a fundamental flaw of the block system from the beginning. It really messes with the rational expectations of the user and defies logic.

I hope that as work proceeds on improving the block system for Rhino 8 that this paradigm will be replaced with one that completely separates the definition from ALL instances and that the tools are organized into separate sets for definition creation, editing and deletion and another set for instance insertion, replacement and deletion. This will lead the user into a much more organized and streamlined mental model and workflow.

Another thing that would undoubtedly prove very useful as projects get larger would be for the definition, wherever it exists - in the model, a different file on the same machine or in a network file, to maintain a list of links to each instance where it is used. When a block is modified or replaced that list would allow a change notice to propagate to everywhere the block is used. An alternate approach might be to maintain a “where used” file list with the definition and let the instance use be maintained in the model file. A further detail that should be managed elegantly and nearly transparently is the moving of the definition file - including the case where it migrates to the network.

Please send the check for $0.02 at your earliest convenience.

If you think his post rightfully belongs in serengeti, please feel free to move it.

1 Like

Hey - I have some suggestion to Block Instances:

1: When using Geometry to create a Block definition, show a ghosted outline of the new Definition, fx with dashed curves, or a special color.
So there is no mistake, this is the DEFINITION you see. Seeing an Instance, and the actual definition is “invisible” is super confusing and counter intuitive. Especially when you want to make adjustments on the definition, and all you see is the visible instance.

2: Curves, surfaces, points, any geometry etc. that is included in a Block definition - should stay update-able by History, including Mirror, CrvThrPoints, Copy etc.

3: Definition (ghosted, dashed outline, special color etc) should be able to be selected, and moved to any new layer, and/or created in current layer. (As it is now , the invisible definition is created in the layer the Geometry is sitting on, NOT the current layer ! - If you dont know this , it is super counter intuitive to find out where it is, since it is “invisible”)

4: Closing the Definition layer should not affect visibility on the Instances !

5: To create Instances of the Definition: Select the ghosted/dashed/special-color Definition, and then simply copy/paste , or copy etc. , and that will create new Instances of the Definition, on “current layer”, and/or moveable to any new layer.

6: Updating the Definition (and thereby all the instances) should be super easy: simply update the defining geometry with History, and the Ghosted/Dashed Definition will update as well , and so on…

I think this should make Block Instances really intuitive and easy to grasp for any newbies, like me ! :slight_smile:

For any other newbies, trying to get their head around working with Block Instances, here is good help from @pascal :pray:
https://discourse.mcneel.com/t/hide-parent-block-instance/142171?u=ohlers

That link gets me to an “Oops. That page is missing or private” notice.