Rhino Duplicate Blocks

Not sure if this is asking for undesirable behavior but when you receiving a stream with blocks into Rhino, if that block already exists in the model then Speckle will fail to create the geometry/block.

I’m interested in Speckle recognizing that a block with the same name already exists and instead would populate the insert point of the incoming block, with the existing block. I.e. I already have a plant_a block in my the model, and I’m receiving a a stream that has 20 more references for plant_a.

We use a lot of blocks for assembly-type geometry (think bolts, screws, etc), where multiple streams share common blocks would be nice if there was an option to handle this otherwise combining streams doesn’t work? I know there is some potential difficulty given how Rhino itself handles duplicate blocks.

Is there any work around for the above?

Hi @lukxfnz !

Currently, the default behavior for receiving blocks on update mode should update any existing block definitions with the incoming block, as requested by a few other users. Previously, Rhino behaved exactly as you suggested, in using the existing block definition if there is a name match.

Given that there seems to be different workflow preferences for using an existing block definition vs updating the existing definition, I can add an additional setting to allow people to toggle which behavior they’d prefer. I’ll keep you updated with progress on this!

1 Like

It really should be both at the same time. If the stream contains a block with the same name but the type properties and geometry is different than the existing block in the rhino model, speckle should update the definition. If the block def in the stream and in the rhino model are the same, not just name but also the geometry and type meta data, then it should not update the existing block def. It should then only create new instances of the existing block.

To do that speckle would have to start tracking change status for both types and instances. Or you could compare hashes of types and instances within the connector.

1 Like

Thanks for the reply @clrkng. Think I agree with @michaelgmccune. There’s almost three different behaviors in my mind:

  1. Update block definition in model, add any new instances to doc
  2. Don’t update block definition in model, add any new instances to doc
  3. Update block definition in model, do not create any new instances

And if no existing block definition exists, create block definition and add instances to doc.

Hopefully this makes sense?