# Rhino ➡ Revit
Software used: Revit 2021, Rhino 7
Stream Rhino geometry directly into Revit as BuiltElements with Speckle! In this tutorial, we'll send a sample building from Rhino into default
Beam families in Revit with the ApplySpeckleSchema command.
Before getting started, make sure you have Speckle Manager installed and an active account set up on a server. This tutorial uses Rhino 7 and any supported version of Revit - check that you have the Speckle 2.0 connectors installed for these applications. Then, download the Rhino 7 file for this tutorial here (opens new window).
- Open the Rhino file. The model is organized into layers for each section of the model we will be sending.
- Pull up the Rhino Desktop UI by typing
Specklein the command line.
- Open a new Revit file, and call up the Revit Desktop UI via the Speckle 2 plugin ribbon.
# Send context geometry as Breps
Let's send our first stream! Since we won't be sending the context geometry as families, the next steps are just a warm up (with some fun layer filtering action):
- Create a new
Contextstream and check that it is on Sender mode. If not, click the arrows on the top right corner to swap the card mode.
- Click the blue Objects button and select Set/Edit Objects Filter from the dropdown.
- From the
Layerfilter tab, select Context::Buildings and Leadenhallish:Substructure and click Set Filter.
- Click Send on the
- In Revit Desktop UI, click the blue Add a stream button on the bottom. Add the
Contextstream card to UI by clicking the arrow next to the stream in the popup window.
- Click Receive on the stream card, and watch the geometry come in as generic models!
# Send ground floor geometry with walls, floors, and a facewall
For the ground level of our building, we're going to send geometry as a mix of walls, floors, facewalls, and generic models for elements (like ramp surfaces) that are not currently supported.
Let's try using the Automagic ⚡ method, which automatically decides which schemas to apply to your selected geoemtry based on object and layer names as well as geometry type. Let's test this out and see which geometries were successfully assigned a schema:
- Lock the context layers you sent from the previous section, and hide all layers except for Leadenhallish::Ground Floor for ease of selection.
- Type ApplySpeckleSchema in the command line - notice that the Automatic command option toggle is by default set to On.
- Select all objects in Leadenhallish::Ground Floor and hit Enter to finish the command.
- Now click through the geometry and check which pieces have been assigned a Speckle schema by navigating to the Object > Properties > Attribute User Text panel.
You should see a <SpeckleSchema,Floor> keyvalue pair in the attribute user text panel of any planar horizontal surfaces on the ground floor. However, the planar vertical surfaces were not assigned a schema, even though they should be walls: this is because the automagic method picked up the word Floor in the layer name and only tried to assign the
Floor schema to all the selected objects! Let's manually set a wall schema for our vertical surfaces:
- Select the vertical surfaces on the Leadenhallish::Ground Floor layer.
- Type ApplySpeckleSchema in the command line and set the Automatic command option toggle to Off. Hit Enter.
- The command now shows two options. Make sure DirectShape is set to Off, and click on the Schema option toggle to change the schema to Wall. Hit Enter.
- Check the Attribute User Text panel and you should see a <SpeckleSchema,Wall> entry now!
- Repeat steps 1-4 for the curving surface on the ground floor, this time selecting the Schema=Facewall option instead.
Ground Floor stream to send all geometry from the Leadenhallish::Ground Floor layer, and receive it in your Revit file! Any objects that were assigned a schema will be converted as default Revit families.
# Send the core brep as walls and floors
Next, we'll send try to send the core geometry as
- Lock the previous layer and unhide the Leadenhallish::Core layer.
- Select all geometry - notice that the core is modelled as a single brep.
- Try to apply schemas automatically with the ApplySpeckleSchema command.
- No schemas were assigned to the brep! We need to explode it first into surfaces: select the brep and type Explode in the command line.
- Now try applying schemas again. Voila, floors and walls were assigned!
- Create a
Corestream and send the geometry to Revit
# Send the floor slabs and truss to complete the model
To finish off our model, let's now send the floor slabs and truss with the automagic method. We don't need to worry about missing schemas in the Leadenhallish::Floor Slabs layer since it only has horizontal surfaces, and the truss curves in Leadenhallish::Structure sublayers will be smartly picked up as either
- Lock the previous layer and unhide Leadenhallish::Structure and select Leadenhallish::Floor Slabs. Select all containing geometry.
- Apply schemas automatically with the ApplySpeckleSchema command.
- Cycle through some of the truss members to look at their assigned schema: lines with < 45 degree deviation from vertical are assigned as columns, while all others are assigned as beams.
- Create a
Floors and Trussstream and send to Revit - our Leadenhall lookalike building is now complete!
Detailed information on the Rhino schema commands used in this tutorial can be found under the
Advanced User section in the Rhino User Guide. This feature is an early prototype, so we currently do not offer control over specific family types during schema assignment: ⚠ all geometry with schemas are assigned a default type upon conversion into Revit.
To remove schemas applied during this tutorial and start over:
- Type RemoveSpeckleSchema in the command line
- Select objects to remove schemas from
- Press Enter - Speckle AUT strings are now deleted from all selected objects!