Rhino→Revit Workflow via the Web FLUX Version 1.4 TABLE OF CONTENTS 1.0 INTRODUCTION 1.1 WHY FLUX 1.2 OVERVIEW OF THE PRIMER 1.3 SOFTWARE REQUIREMENTS 1.4 PREREQUISITE KNOWLEDGE 2.0 TRANSFERRING DATA THROUGH FLUX 3.0 SENDING A GRASSHOPPER MODEL TO REVIT 3.1 DOWNLOADING THE FLUX PLUGINS 3.2 CONNECTING GRASSHOPPER TO FLUX 3.3 CONNECTING DYNAMO TO FLUX 4.0 SENDING A RHINO MODEL TO REVIT 4.1 INTERNALIZING RHINO GEOMETRY INTO GRASSHOPPER 4.2 SENDING GEOMETRY TO FLUX 4.3 RECEIVING GEOMETRY FROM FLUX 4.4 CONVERTING RHINO GEOMETRY TO REVIT FAMILY 5.0 APPENDIX 5.1 INDEX 5.2 BUILDING A TWISTY TOWER IN GRASSHOPPER 2 last updated 3/23/2016 1.0 INTRODUCTION 1.1 WHY FLUX Transferring a model from Rhino to Revit is a common design challenge in the modeling and design phases of a building project. Many tools and workarounds have been developed over time to address this need, including Grevit, Hummingbird, Mantis Shrimp, and manually exporting and importing .sat or .dwg files. Unfortunately, none of these methods create live links. Updates in either the Rhino or Revit model do not automatically propagate to the other, slowing down design iteration. As the demands for building design increase in a rapidly urbanizing world, the drawbacks of such inefficiencies in the design process will only grow. Flux provides a unique solution for connecting Rhino to Revit via the web. Rather than performing file conversions locally, Flux enables the transfer of data directly from one application to the other. As a result, any design changes made within a Rhino model will immediately propagate to the Revit model. Vice versa, any changes made within a Revit model will propagate to a Rhino model. The ability to keep designs automatically in sync speeds up each iteration cycle and ensures that collaborators on a project are always working on the latest designs. 1.2 OVERVIEW OF THE PRIMER This primer will walk you through the basic steps of two different options for creating a Rhino to Revit workflow with the Flux plugins for Grasshopper and Dynamo. For users that are familiar with parametric design and comfortable designing in Grasshopper, you may refer to 3.0 Sending a Grasshopper Model to Revit . Alternatively, for users that prefer designing in Rhino, you may refer to 4.0 Sending a Rhino Model to Revit . Reference materials are included in 5.0 Appendix to provide more information about the Flux plugins and an introductory parametric design example in Grasshopper. By the end of this primer, you will be able to: • leverage the Flux Grasshopper and Dynamo plugins to create a live link from Rhino to Revit • build a basic parametric model within Grasshopper 3 last updated 3/23/2016 1.3 SOFTWARE REQUIREMENTS • • • • • • • latest Chrome browser ( download link ) Rhino 5 SR9+ 64-bit for Windows ( download link ) Grasshopper 0.9+ ( download link ) Revit Architecture 2015 or 2016 ( download link ) Dynamo 0.9.0 or Dynamo Studio 2016 ( download link ) Flux account (sign up at flux.io/signup using the latest Chrome browser) Flux Grasshopper plugin and Flux Dynamo plugin ( download link ) 1.4 PREREQUISITE KNOWLEDGE • • 4 Rhino (proficient) & Grasshopper (beginner) REVIT (proficient) & Dynamo (beginner) last updated 3/23/2016 2.0 TRANSFERRING DATA THROUGH FLUX Before jumping into the how-to section of this document, let’s quickly review what we are going to do. Here is a diagram for how your Grasshopper or Rhino model will be sent to Revit: The first half of the diagram shows what you will do in 3.2 Connecting Grasshopper to Flux . Using the Grasshopper plug-in, you will send a model (represented by the blue piece) to the Flux cloud. It will thereafter be stored in the cloud along with all other data that you send to Flux. The second half of this diagram shows what you will do in 3.3 Connecting Dynamo to Flux . You will be using the Dynamo plug-in to receive the same model from Flux into the Dynamo environment. (Note this model still exists in the Flux cloud and can be received in any other application with a Flux plug-in at any time.) Now that you have an overview of the process, let’s get started. 5 last updated 3/23/2016 3.0 SENDING A GRASSHOPPER MODEL TO REVIT This section will cover the first of two options for how to create a Rhino to Revit workflow. An animated example of the complete workflow can be found here . 3.1 DOWNLOADING THE FLUX PLUGINS To setup up your Flux workspace within Grasshopper and Dynamo, download the Flux plugins using the combined installer. Once you relaunch both applications, you will notice a Flux toolbar has appeared alongside the other native toolbars. For a detailed description of the Flux Grasshopper components and how to use them, refer to 5.1.1 Flux Grasshopper Components . Similarly, for a detailed description of the Flux Dynamo nodes and how to use them, refer to 5.1.2 Flux Dynamo Nodes . 3.2 CONNECTING GRASSHOPPER TO FLUX For the purpose of clarity, this how-to guide uses a Twisty Tower model to demonstrate the Rhino to Revit workflow. A tutorial for the Twisty Tower is included in 5.2 Building a Twisty Tower in Grasshopper . You can use the Twisty Tower or your own Grasshopper model to follow along. In this section we are going to send the Twisty Tower model to Flux. The image below shows the completed workflow: 6 last updated 3/23/2016 3.2.1 CREATING OR SELECTING A FLUX PROJECT Click and drag the Flux Projects component onto your Grasshopper canvas. You will be prompted to log into your Flux account. Check “Remember me on this computer” to skip this dialogue box in the future. Click the down arrow on the Flux Projects component tab to view projects that you’ve already created in Flux. Type a project name into the box and select “Create project” at the bottom of the list to create a new project. Alternatively, if you have already created a project as shown in the image, you can select it. Once you’ve selected/created the project, the component will display its name. 7 last updated 3/23/2016 3.2.2 CREATING OR SELECTING A FLUX KEY Drag the To Flux component onto the canvas and connect the Keys (Ks) output from the Flux Project component to the Keys (Ks) input of the To Flux component. Click the down arrow on the To Flux component to view the keys that already exist in this project. As you did before, you can create a new key or select an existing key as shown in the image. Once you’ve selected/created the key, the component will display its name. 3.2.3 SETTING THE FLOW CONTROL Drag the Flow Control component onto the canvas and wire its output to the Mode (M) input of the To Flux component. Select Constantly mode. Check the description under 5.1.1 Flux Grasshopper Components to see the difference between Once and Constantly mode. 8 last updated 3/23/2016 3.2.4 SENDING A MODEL TO FLUX Wire the output of the component containing your completed Twisty Tower model to the Value (V) input of the To Flux component. You have now successfully sent your Twisty Tower to Flux. Any changes you make to the Tower will automatically be sent to Flux. 3.3 CONNECTING DYNAMO TO FLUX We are now going to receive the Twisty Tower from Flux into Dynamo. The image below shows the completed workflow for this section. As you can see, the model below matches what we sent up from Grasshopper. 9 last updated 3/23/2016 To have this same model appear in Revit, you simply launch Dynamo from within Revit. Below is a side-by-side view of the open Dynamo and Revit windows. 3.3.1 RETRIEVING A MODEL FROM FLUX Wire the Flux Projects node to the Select From List node and use the dropdown menu to select the project that you sent the model to in Grasshopper. Once you select the correct project, wire the Object output of Select From List Project input of the Data Keys Wire the Data Keys to the node. node to another Select From List node and use the dropdown menu to select the key that you sent the model to in Grasshopper. 10 last updated 3/23/2016 Wire the Object output of Select From List to the Key input of From Flux , and the Mode output of Flow Control to the Mode input of From Flux . Set the Mode to Constantly for live updates. Your model should now appear in Dynamo. If it does not, check to see if Dynamo is set to ‘Automatic’ runs, found on the bottom left corner of the Dynamo environment as a dropdown menu. You have now have a complete Rhino to Revit workflow! Make changes to your Twisty Tower in Grasshopper to see it automatically update your Twisty Tower in Revit (while Flow Control sending and receiving are set to Constantly). 11 last updated 3/23/2016 for both 4.0 SENDING A RHINO MODEL TO REVIT This section covers the second of two options for how to create a Rhino to Revit workflow. Rather than send a parametric model designed in Grasshopper to Revit as covered in 3.0 Sending a Grasshopper Model to Revit , you will use send a model designed directly in Rhino to Revit. You still need to use Grasshopper and Dynamo to create a link, but all design can be done with Rhino. Refer to 3.1 Downloading the Flux Plugins to set up your workspace. 4.1 INTERNALIZING RHINO GEOMETRY INTO GRASSHOPPER Once you’ve built your model in Rhino, open up Grasshopper. Double click the Grasshopper canvas to bring up the search bar for the component library. Search for the Geometry component and select it to bring it onto the canvas. Right-click the Geometry component and select ‘Set Multiple Geometries.’ This will automatically bring you to Rhino, where you can manually select (click on) the parts of the model that you would like to send to Flux. 12 last updated 3/23/2016 To demonstrate the concept of transferring Rhino geometry, columns were manually drawn in Rhino for the Twisty Tower as lines running between each of the floors. Hold down shift to select multiple lines (or geometries from your model). When you are done selecting the lines (or parts of your model) that you’d like to send, hit enter, and you will be brought back into Grasshopper. You’ll notice whenever you click the Geometry component, it will reference the specific parts of the Rhino model by highlighting them green. 4.2 SENDING GEOMETRY TO FLUX You can now send the columns to Flux, as described above in 3.2 Connecting Grasshopper to Flux . (Note this step will throw an error if you used polylines to draw the columns. Revit recognizes lines but not polylines; therefore you’ll need two extra components Explode and Line to convert your polylines into separate line segments.) 4.3 RECEIVING GEOMETRY FROM FLUX Now open up Dynamo within Revit and recieve the lines from Flux, as described above in the 3.3 Connecting Dynamo to Flux section. 13 last updated 3/23/2016 4.4 CONVERTING RHINO GEOMETRY TO REVIT FAMILY In order for the lines to display as actual columns within Revit, there are a few more operations needed. Bring in the StructuralFraming.ColumnByCurve node and feed into its Curve input the Value output of the From Flux node. Next bring in the Levels node and use the dropdown menu to select Level 1. Wire that to the Level input. Finally, bring in the Structural Column Types node and use the dropdown menu to select a column type. Connect that to the StructuralColumnType input. You now have your Rhino model in Revit. Try moving the lines around in Rhino to see how that propagates to your columns in Revit. 14 last updated 3/23/2016 5.0 APPENDIX 5.1 INDEX 5.1.1 FLUX GRASSHOPPER COMPONENTS There are four important Flux Grasshopper components within the Flux toolbar (shown above): Flux Projects This component allows you to select the Flux project that you’d like to send your model to. It has an optional Filter (F) input that filters down the project names within the component’s dropdown menu. It outputs the Keys (Ks) of the selected Flux project as a list and Metadata (M) of the project. To Flux This component allows you to send data to a Flux key within a Flux project. It requires two inputs: the Keys (Ks) output from the Flux Projects component, and your data for the Value (V) input. It also has a third recommended input called Mode (M), which receives the output of the Flow Control component. From Flux This component allows you to receive data from a Flux key within a Flux project. It has the same Keys (Ks) and Mode (M) inputs as the To Flux component. Therefore, the Value (V) referencing your data is an output instead of an input. This component sets how frequently you send/receive data and feeds into the Mode (M) input of the To Flux and From Flux components. It has two modes: ‘Once’ and ‘Constantly’. ‘Once’ mode allows you to send/receive data to/from a Flux key manually when you choose. ‘Constantly’ mode allows you to send/receive data to/from a Flux key automatically every time a change is made. To make this more clear, check out the table below to understand how the Flow Control Modes of the sender and receiver affect the frequency of data transfer. Flow Control 15 Send Data to Flux Receive Data from Flux Frequency of Data Transfer Constantly Constantly Instant data transfer between sender and receiver every time there is an update. Constantly Once Latest data available to receiver last updated 3/23/2016 when he/she chooses to receive it. Once Constantly Latest data available to receiver when the sender chooses to share it. Once Once Data transfers only when the sender chooses to share it and the receiver chooses to receive it. Sender and receiver could potentially be out of sync. 5.1.2 FLUX DYNAMO NODES On the left is the Flux toolbar within Dynamo. The Flux Dynamo nodes follow a very similar logic to the Grasshopper components, but have some minor differences in execution. Flux Projects Data Keys 16 This node retrieves the list of Flux projects in your account. Use this node to login to Flux and it will return a list of your project in the single output Projects. Connect the output to a Select From List node to choose the project you would like to work on. This node retrieves the list of Flux keys within a given Flux project. It requires a Project as an input and queries Flux for the Project’s list of Keys. The Keys needs to be wired to a Select From List node to choose the key you would like to send/receive data to/from. last updated 3/23/2016 Select From List To Flux This node allows you to interactively select an item from a list of objects. It takes into its Objects input either the Projects output from the Flux Projects node or the Keys output from the To Flux or From Flux nodes. Only one item can be selected at once. The output Object of this component is the selected item: either a project or a data key. (Note: In Grasshopper this ‘select from list’ functionality is integrated into the To Flux and From Flux components.) This node sends data to a particular Flux data key. It has three inputs: the Key selected from the Select from List node, the Mode from the Flow Control node, and the data you want to send for the Value input. By default, the value will be sent once upon connection without the Flow Control node. This node receives data from a particular Flux data key. It takes two inputs: the Key selected from the Select from List node and the Mode from the Flow Control node. By default, the will be received once upon connection with the Flow Control node. From Flux Flow Control This node sets how frequently you send/receive data to/from Flux and feeds into the Mode input of the To Flux and From Flux nodes. It has three modes: ‘Once’, ‘Constantly’, and ‘Locked’. The ‘Once’ and ‘Constantly’ modes mirror the Flow Control component in Grasshopper. ‘Locked’ mode provides a special interlock to prevent accidental synchronization. 5.2 BUILDING A TWISTY TOWER IN GRASSHOPPER This section is an abridged version of the following tutorial found online: http://wiki.bk.tudelft.nl/toi-pedia/Tutorial_1_-_Rotating_Tower 5.2.1 DEFINE THE INPUTS For this particular tower, there are five different controlling parameters: • the height of the tower • the height of each floor • the radius of each floor • the number of edges of each floor • the rotation of the tower Here is a diagram for how each of these inputs will determine the final structure of the tower: 17 last updated 3/23/2016 5.2.2 DEFINE THE HEIGHT OF THE TOWER We define the height of the tower by drawing a vertical line that will as the spine of the building. We do this by connecting two points along the z-axis with the following blocks (names in red): • 2 x Vector >> Point >> Point XYZ • Params >> Input >> Number Slider • Curve >> Primitive >> Line Pull them onto the Grasshopper canvas and connect them as shown below: Right-hand click on the Number Slider and click Edit to change its Properties: • Name: buildingHeight (it’s good practice to name parameters) 18 last updated 3/23/2016 • • • Min: 3.00 (the minimum height of the tower is 3 meters) Max: 300.00 Numeric value: 100.00 Your Rhino model should now look like this: 5.2.3 OUTLINE THE FLOORS We now want to set the floor height and divide the spine of the building based on this height. To do this, we will use two blocks: • Curve >> Division >> Divide Distance • Params >> Input >> Number Slider Again, edit the Parameters of the Number Slider : • Name: floorHeight • Min: 2.80 • Max: 6.00 19 last updated 3/23/2016 Now we create the shape of the floor with a simple polygon. The polygon block has four inputs, but we will only focus on two: its radius and number of sides. These two inputs will be defined once again by Number Sliders . • 2 x Curve >> Primitive >> Polygon • 2 x Params >> Input >> Number Slider Parameters for Number Slider A: • Name: outerRadius • Min: 5.00 • Max: 25.00 Parameters for Number Slider B: • Name: numberOfSides • Min: 3 • Max: 10 • Numeric Value: 6 For Number Slider B, you should also right-hand click on the component and change slider type to Integers. That way you won’t have a fraction of sides for a polygon. Wire everything up to set the polygons as the bottom and top of the tower: 20 last updated 3/23/2016 5.2.4 ADD ROTATION Before we create the rest of the floors, let’s add rotation to the tower. • Transform >> Euclidean >> Rotate • Math >> Script >> Evaluate • Params >> Input >> Number Slider Parameters for the Number Slider : • Name: Rotation • Min: 0.00 • Max: 180.00 Notice that the Rotate component has an input called Angle. This is the angle of the rotation in radians. Because the Number Slider is feeding the value of the rotation in degrees, we need to use the Evaluate component to convert the degrees into radians. Right-hand click on the F input for the Evaluate component and type Rad(x) under Expression Editor. The component will now convert degrees into radians. Wire up the components to the polygon on the top of the building. 21 last updated 3/23/2016 The Rotate component actually duplicates the polygon that is fed into its inputs. Right-hand click on the Polygon component and toggle the Preview button off; the duplicate will disappear. Now we can create the outer surface of the tower with one more block: • Surface >> Freeform >> Loft 22 last updated 3/23/2016 To connect both Polygon components to the Loft component, wire up one and then hold the Shift key when wiring up the other. Once you complete this step, have some fun toggling the buildingHeight, outerRadius, numberOfSides, and Rotation to see the effect. 5.2.5 CREATE THE FLOORS Now we return back to creating the floors using the points along the spine of the building as our guide. We need to first create planes using the points as the center points. • Vector >> Plane >> XY Plane • Intersect >> Mathematical >> Brep_Plane The XY Plane component will create a plane at every point as described. The Brep_Plane component will trace the intersection of each plane and the outer edge of the tower created by the Loft component. To see this awesome effect in action, toggle the Preview of the Loft component off, as well, as the XY Plane component once you’ve wired it up. 23 last updated 3/23/2016