Speckle supports sending and receiving blocks in AutoCAD and Rhino, as well as receiving them as generic models in Revit. Read further to discover what to expect in each application!
::: tip Tech Prerequisites
To follow along with this tutorial, you will need to register with Speckle and install the required connectors 🔌. It takes less than 3 minutes!
For a comprehensive overview of these connectors, check our docs 📚!
::: tip Knowledge prerequisites
If you are not familiar with the basics of sending and receiving models with Speckle AutoCAD, Rhino, or Revit, we strongly recommend following our Getting Started tutorials first before coming back to this one!
Getting Started with AutoCAD
Sending blocks with Speckle works like any other geometry object: when you send a block instance from AutoCAD or Rhino, it is converted to a Speckle block instance that can then be received in either application. When receiving block instances in Revit, they will be created as instances of a generic model family.
How does Speckle treat block instances and definitions?
When you send a block to Speckle, you are really creating a Speckle block instance that includes:
- the insertion point for the instance
- a 4x4 affine transformation matrix
- the Speckle block definition
The Speckle block definition contains the actual geometry objects, as well as its name and a base point from which the transform is calculated.
When looking at blocks in Speckle web, they will show up under a separate "Blocks" list (unlike other geometry, which will appear under their layer list). We are working on making them selectable in the web!
::: warning Geometry constraints
The geometry in Speckle block definitions is constrained by what Speckle can send and receive in each application. For a comprehensive list on what types of geometry are supported in each application, check our docs!
Blocks in AutoCAD
Sending blocks from AutoCAD is just like sending any other piece of geometry: select your instances in your model space, set the selection in the Speckle AutoCAD plugin, and click send!
Note that sending dynamic blocks, and blocks from external references, is not currently supported.
When receiving blocks in AutoCAD, new block definitions will be created with your stream, branch, and commit information as a prefix to your original block name. This is to prevent potential confusion in AutoCAD files that already contain a block definition with the same name. Note that Speckle blocks will always be created on the default "Layer 0".
Blocks in Rhino
Sending blocks from Rhino is just like sending any other piece of geometry: select your instances in your model space, set the selection in the Speckle Rhino plugin, and click send!
When receiving blocks in Rhino, new block definitions will be created with your stream, branch, and commit information as a prefix to your original block name. This is to prevent potential confusion in Rhino files that already contain a block definition with the same name. Note that Speckle blocks will always be created on the "Default" layer, but their definition geometry will be located on their corresponding created layers.
Blocks in Revit
When you send blocks from AutoCAD or Rhino to Revit, a new generic model family template will be created from the block definition, and instances of this family will be placed in your Revit document.
This generic model family name will start with "SpeckleBlock" to prevent potential duplication of existing generic model families. Note: remember to delete Speckle block families when receiving blocks from Speckle that have the same name, otherwise the old family will be used!
You can edit the generic model family as usual, and this will update all instances in your Revit model:
::: warning Missing blocks
If a block definition contains any geometry that Speckle Revit does not support, then the entire block will not be created. This is due to limitations on transaction rollback in family documents.
Why can't I send blocks from Revit?
Blocks come in to Revit as generic model family instances, so when you send them back to Speckle, they will be sent as families!
Can I send and receive dynamic blocks?
Nope, not yet.
Why are some parts of my blocks missing?
Block interoperability between AutoCAD, Rhino, and Revit is subject to geometry conversion constraints [link]: this means that if your block definitions contain any kind of geometry that is not supported in your receiving application, it won't be converted (or for example in the case of breps to Revit, they may come in as meshes!)
Can you explain more about the transform matrix?
Speckle block instance transform matrices use a 4x4 convention where:
- the 3x3 sub-matrix determines scaling
- the 4th column's first three values define translation
- the 4th row is an identity row
We hope you enjoyed this tutorial and found it useful!
Speckle is an Open Source project and we really ❤️ feedback, so if you have any questions, comments, critiques, or praises please let us know on our community forum.