Rhino 8 Feature: Block Manager Panel

Hello

The Rhino 8 WIP has a new Block Manager panel for Windows and Mac which will replace the old modal UI.

This is in early development and more features are planned. We would love to hear your thoughts, feedback and bug reports here.

Thanks.
-Lars

16 Likes

Hi ! I was waiting for an announcement to bring it up, but I do have some early feedback :

  1. It would be nice to have some options other than just Rename in the right-click menu of block instances, like at least a select, or some kind of highlight
  2. When I double-click onto a top-level block-instance, I enter in Block Edit mode, but it won’t do anything if my block-instance is a child level one.
  3. If I don’t want to see all objects in block instances or definition, the panel won’t remember my choice.

Thanks for the feedback.

1 and 3:
I hope to have this fixed in the next few weeks.

2:
We have plans to completely rework the Block Edit UI.

-Lars

1 Like

Very happy to see this getting the (needed) attention.

  • Would be great to have a toggle for “preview block origin” to visually see where the base plane of the block is.
  • Also when dealing with mesh/nurbs edge previews - usually I want to keep the edge display for the whole file EXCEPT the blocks. So it would be nice to have a separate “Show block edges” toggle in either the display panel or the new block manager panel. This would serve as an additional visual indicator of what’s a block and what’s not a block when simply navigating the viewport.

Thanks!
-Gediminas

3 Likes

Here is an update for the Block Manager.

The block manager panel shows all the block definitions and the geometry they contain. One can edit the block definition properties.

It is possible to select the content of a block to modify its object properties.

At the moment there are the following features:

  • Block definitions can be inserted to the model by drag and drop.
  • Search and filter options.
  • Block definitions can be selected, duplicated, exported etc. through the context menu.
  • UI to edit the block definition or objects properties.
  • Blocks will be highlighted in the view when selected in the tree.

There is a new panel for Block Instances.


One can:

  • Change the block definition.
  • Add objects to the block definition.
  • MakeUnique which makes a copy of the block definition and assigns the instance to it.
  • Change the transformation.

Feedback and bug reports are welcome.
-Lars

6 Likes

Great to see progress on this!
First issue that I’ve encountered is a heavy drop in viewport performance with blocks that have SubD geometry in them being highlighted


FPS with one subD changed to a block drops from uncapped down to ~5

1 Like

Thanks for the feedback. I logged a bug about it.
-Lars

Thnx @Helvetosaur for linking me here, just gonna link my post and re-iterate the things I’m looking for for the new block edit and block manager:

  1. Make Unique (currently we have to explode and re-define which is silly)
  2. Double click to go up and down the nested block tree (similar to SketchUp)
  3. Support editing non-uniformly scaled Block (very important feature)
  4. Toggle lock/hide rest, which is also super important combined with (2), when dealing with large complex model with many layers of hierarchy like in any architectural project
  5. Add/Remove objects to/from a given block
  6. create block based on an arbitrary CPlane, currently block is defined using WorldXY in default and there is no option to change it even if we change the current CPlane
  7. Show block CPlane, which works great together with (6), currently this kind of feature requires grasshopper with block related plugin without doing some coding. Without them working on large complex geometries with block is very challenging.
3 Likes

My points:

  1. great that you can make block definition unique → translate that into command (maybe it is i could not see)

please inspire heavily from sketchup, good thing is to easily show and hide rest of the model while editting

  1. implement acapulco plugin features, concretely: while defining block one needs to set not only insertion point but whole plane, so x and y vectors. of course one needs to be able to edit that afterwards

(there can be more options, maybe insertion point + world cplane, two vectors, …)

  1. implement blocktools features such as: selsameblock etc. useful little commands

  2. when this is done i think there is nothing more that can be done about static blocks and it will be really great

  1. There are a few ways to do this. There is a command called CreateUniqueBlock, a duplicate option on the context menu of a block definition and finally there is a button on the Block Instance page on the properties panel.

  2. Could you explain more about it.

  3. That will be part of the BlockEdit rework.

  4. That is coming if you mean hiding of objects in a block.

  5. Delete already exists as an option on the context menu of a block definition. Add is possible through a button on the Block Instance page on the properties panel. Add will also come with the BlockEdit rework.

  6. We will discuss this.

  7. We will add it.

Thanks for your feedback.

  1. There is a command called CreateUniqueBlock, a duplicate option on the context menu of a block definition and finally there is a button on the Block Instance page on the properties panel.

  2. We will discuss it.

  3. We will look into it.

Thanks for your feedback.

1 Like

I think @Jun_Wang may be referring to the ability to show or hide those objects outside the block when editing it in place. But I could be wrong.

Pascal’s old Isolate and IsolateLock scripts are a good illustration of that type of functionality, though they didn’t work on blocks.

3 Likes

that’s exactly what I meant thnx

For 2. I mean to be able to go into block and then nested block more easily directly from inside the viewport instead of looking at the block tree, as there are many times where we don’t have time to properly name nested block or if nested block comes from outside sources. Will be great if once I double click on an object inside viewport it will go into that block or that nested block if already inside a block.
Thnx!

3 Likes

To handle the combination of (2) and (4), it would be really nice if showing/hiding the geometry outside of block could be toggled on the command line while in block edit mode. There is then potential to further enhance that by having something like a check box against each block to control show/hide of individual blocks or nested families of blocks in the block tree.

If geometry outside the block is set to “show”, it should be possible to snap to that geometry, to reference it. Being able to DupEdge or duplicate a face from that geometry and have the edge included in the block being edited would be great.

1 Like

Definitely! +1

2 Likes

All great and necessary features! I would add a few

  1. Hide/show/fade/highlight similar blocks
  2. Hide/show/fade rest of the model (like SketchUp) but better by being able to select in the hierarchy up to which level it is visible. If am designing the handle, I just need to see the door and not the whole building.
  3. Being able to lock translation, rotation or scale per axis. This would be awesome with NU scaling, limiting for instance the thickness of a material but not the sheet dimensions.
  4. number 3 should affect the gumball, showing only the allowed transformations for the block.
  5. Scaling should not only be on or off by axis, but also it would be great to be able to set limits and steps as intervals or arbitrary values
  6. Rhino’s Gumball should be able to be automatically oriented and positioned according to the block’s plane.
1 Like

Possible already. Set the block’s Gumball to local.

1 Like

Hi @lars and team,

Great to see this stuff is getting some love. I understand that this is mostly for your architectural customers, but in the name of the small minority here doing industrial design work in Rhino, and working as a team, I’d like to ask a few other things to consider including, that might benefit users in all industries. I numbering them with the g-prefix to avoid confusion with all the previous numbered lists on the thread:

g1. date of creation of the block definition
g2. date of last edit of the block definition
g2. .3dm file name from which this block definition was first created (it’s common to keep using a Block that came from other files)
g3. name of creator (is this the new handle I edited, or the previous one that Alan had done?)
g4. expandable viewer like shown on this example below, where maybe that block had 4 design iteration versions and you are looking for the one version with the 3mm chamfer, impossible to see on that postage stamp:


g5. Have a donotscale/skew/deform/mirror option. So some blocks are absolutely uneditavble from a geometry standpoint. Very important for us for internal components or parts that are reference of other existing parts/constraints and should never ever ever be scaled.
g6. have a to not mirror geometry, just mirror location/bounding box: use case; I want to mirror an assembly of objects, but I do not want to mirror screws, threads, or a microchip on a PCB, I just want to mirror it’s locations/boundingbox.
g7. Ability to set custom SetObjectDisplayMode attributes to a block, or objects inside a block, and that works regardless on what viewport you are in later.
g8. Ability to change materials or color assignments to any bock instance, as overrides outside the block properties.
g9. Cached of imported/referenced geometry blocks (from .stp files) with .3dm native geometry so they are faster to display and open.
g10. Propertiless instance. I want to control how to override/ignore any block information such as color/material/layer/etc. without editing the referenced block. I do not want to think about what layers I need to turn on, for an instance of a block to be visible, other that turning on the layer where that instance lives. Same for seeing an instance of a block (referenced geometry) with a different color and/or material applied. Does this make sense?

In summary, I’d love to have blocks being more useful and more manageable; and this requires a few features that are still unaddressed in its current architecture, regardless of how you visually display them.

Thanks,

Gustavo

8 Likes

RH-72162 wish: Block created / modified date

Just to be sure, do you mean for blocks that are NOT inserted as linked?

RH-72163 Wish: enlargeable block preview

I see this as one thing, and added RH-72164 Wish: Protected blocks

Currently if I edit a block and set object properties to an object, it work as you describe. How would you like to work this differently?

I think this is essentially the wish for dynamic blocks, is that correct? Or would you only use it for materials? Or would the material need to be an independent feature regardless of the instance?

This one needs a bit more clarification, can you indicate what differences you are seeing between native and non native file blocks?

This is a complicated one I think. All objects need to reside on a layer, and these layers will be visible. I wonder how you are working most of the times: with linked blocks or embedded? Linked blocks have the advantage of having their own structure. I created a few scripts for organizing blocks that could help, did you ever try these? https://github.com/studiogijs/pythonscripts/tree/master/blocks

1 Like