Creating Conceptual mass in REVIT and Creation of Sinusoidal curve and a Parametric stadium using Dynamo
1) Creating a set of sinusoidal points in Dynamo, forming a curve, and then creating a surface from that curve involves several steps. Below, I’ll walk you through the steps and logic needed in Dynamo to achieve this:
Step-by-Step Guide for Creating Sinusoidal Points and Surface in Dynamo
1. Creating the Sinusoidal Points
- Use a
Rangenode to generate a list of values along the x-axis (e.g., 0 to 10).- Set the
startto 0 and theendto the desired length (e.g., 10). - Set the
stepto control the density of points (e.g., 0.1).
- Set the
- Use a
Math.Sinnode to apply the sine function to each value in the list.- Connect the output of the
Rangenode to the input of theMath.Sinnode.
- Connect the output of the
- Create a list of points using the
Point.ByCoordinatesnode.- Connect the output of the
Rangenode to thexinput (x-coordinates). - Connect the output of the
Math.Sinnode to theyinput (y-coordinates). - Set a constant value for
z(e.g., 0) to keep the points on the same plane.
- Connect the output of the
2. Creating a Curve from the Points
- Use a
Curve.ByPointsnode to create a curve from the list of points you generated.- Connect the output of the
Point.ByCoordinatesnode to the input ofCurve.ByPoints.
- Connect the output of the
3. Creating a Surface from the Curve
- Use a
Surface.ByPatchnode to create a surface from the curve.- Connect the output of the
Curve.ByPointsnode to the input of theSurface.ByPatchnode.
- Connect the output of the
- Optionally, you can create a more complex surface by using additional points or curves and setting them as a boundary.
Dynamo Script Overview
Here is an overview of the logic you should follow in Dynamo:
- Generate X-coordinates using the
Rangenode. - Calculate Y-coordinates using the
Math.Sinnode. - Create points with the
Point.ByCoordinatesnode. - Create a curve from the points using the
Curve.ByPointsnode. - Create a surface using the
Surface.ByPatchnode.
Detailed Dynamo Node Setup
-
Range Node:
- Start:
0 - End:
10 - Step:
0.1
- Start:
-
Math.Sin Node:
- Connect the output of the
Rangenode to the input.
- Connect the output of the
-
Point.ByCoordinates Node:
- X: Connect to the output of the
Rangenode. - Y: Connect to the output of the
Math.Sinnode. - Z: Use a
Numbernode-set to0.
- X: Connect to the output of the
-
Curve.ByPoints Node:
- Input the output from
Point.ByCoordinates.
- Input the output from
-
Surface.ByPatch Node:
- Input the output from
Curve.ByPoints.
- Input the output from
Sample Code in Dynamo (Python Script for Advanced Users)
If you want more control or wish to automate the creation with Python, you can use a Python script node:
import math
# Input from Dynamo
x_values = IN[0] # List of X values
y_values = [math.sin(x) for x in x_values]
z_value = 0 # Keep points on the same plane
# Generate points
points = [Point.ByCoordinates(x, y, z_value) for x, y in zip(x_values, y_values)]
# Create curve
curve = Curve.ByPoints(points)
# Output
OUT = curve
Expected Outcome
After running the script in Dynamo:
- You should see a sinusoidal curve formed in the Revit environment.
- The surface generated by the
Surface.ByPatchnode will be created from this curve, resulting in a 3D representation of a sine wave.
Customization
- Adjust the range and
stepof theRangenode to control the density and length of the sinusoidal curve. - Modify the amplitude of the sine wave by scaling the output from the
Math.Sinnode.
This workflow will create a sinusoidal curve and a surface in Dynamo that can be imported into your Revit model for further use or visualization.
2) Creating a conceptual layout of a floor plan in Dynamo and linking it to model elements in Revit, such as walls, involves several steps. Below, I'll provide you with a comprehensive guide for creating the layout, adding parameters for walls, and using sliders to control wall dimensions.
Step-by-Step Guide to Creating a Conceptual Floor Plan and Link Walls in Dynamo
Step 1: Create the Conceptual Layout (Floor Plan) in Dynamo
-
Open Dynamo from within Revit.
-
Create a new workspace in Dynamo to start building your floor plan.
-
Create Basic Geometry:
- Use the
Line.ByStartPointAndEndPointnode to create straight lines that will represent the walls of the floor plan. - Connect multiple
Line.ByStartPointAndEndPointnodes to build the outline of your floor plan. Adjust the start and end points to create corners and various shapes.
- Use the
-
Use Sliders for Flexibility:
- Add
Slidernodes to control the length and height of the walls.- Create a slider for the length of the wall (e.g., range from 5 ft to 50 ft).
- Create a slider for the height of the wall (e.g., range from 8 ft to 20 ft).
- Add
Step 2: Link the Lines to Model Elements in Revit
-
Import Revit Wall Elements:
- Use the
FamilyTypenode to select the wall types available in your project. - Connect the
FamilyTypenode to aWall.ByCurveAndLevelnode to create walls from your lines.
- Use the
-
Create Walls with Parameters:
- Connect the lines you created to the
Wall.ByCurveAndLevelnode's input for the curve. - Use a
Levelnode to specify the level at which the wall is placed (e.g., "Level 1"). - Connect the output of the slider for height to the
Wall.ByCurveAndLevelnode to control the wall height dynamically.
- Connect the lines you created to the
-
Set Wall Parameters:
- Use the
Set Parameternode to link and modify parameters such as wall type, height, and other properties. - Connect the selected
FamilyTypeto theWall.ByCurveAndLevelnode to specify the wall type.
- Use the
Step 3: Customize Wall Parameters Using Sliders
-
Link Sliders to Parameters:
- Use a
Slidernode connected to theWall.ByCurveAndLevelnode's height parameter input to adjust the wall height interactively. - Connect a
Slidernode to the length input of theLine.ByStartPointAndEndPointnodes to control the length of the walls dynamically.
- Use a
-
Modify Wall Types and Parameters:
- Use the
Set Parameternode to set the parameters of the walls, such asWall Type,Height,Material, etc. - Connect the
FamilyTypeor other nodes to apply different wall types as needed.
- Use the
Dynamo Script for Conceptual Layout and Wall Creation
Here's a basic script outline for creating walls with adjustable parameters:
1. Create a `Line.ByStartPointAndEndPoint` node for each segment of your floor plan.
2. Create a `Slider` node for the length and height of the walls.
3. Use a `FamilyType` node to select the wall type from your project.
4. Create a `Wall.ByCurveAndLevel` node and connect the curve from `Line.ByStartPointAndEndPoint`, the level from `Level` node, and the wall type from `FamilyType`.
5. Use `Set Parameter` nodes to modify wall parameters (e.g., wall height, material).
Visual Representation and Interactivity
- You should now be able to see the layout of the floor plan created in Dynamo and linked as walls in the Revit model.
- The sliders will allow you to interactively change the length and height of the walls and see the updates in real time within the Revit environment.
Final Steps: Run and Test the Script
- Run the script in Dynamo to create the walls and update the parameters in Revit.
- Adjust the sliders to change the length and height of the walls and observe how the walls in Revit respond.
- Check the wall properties in Revit to ensure that the correct wall type and parameters have been applied.
Conclusion
This approach will help you create a conceptual floor plan layout in Dynamo and link it to model elements in Revit. By using sliders, you can dynamically control the dimensions and properties of the walls, providing a flexible and interactive design tool for your Revit projects.
3) Creating an array of model elements in Revit and using Dynamo to vary their properties involves a few steps. Here, I'll guide you through how to create an array of elements and then use Dynamo to control their properties using sliders or code blocks.
Step-by-Step Guide to Creating an Array and Vary Properties in Dynamo
Step 1: Create an Array of Model Elements
-
Place Model Elements in Revit:
- Create or select the model elements in Revit that you wish to array (e.g., columns, windows, or any other type of family).
-
Open Dynamo:
- Open Dynamo from the Revit ribbon to create a new workspace.
-
Select Elements:
- Use the
Select Model Elementsnode to select the model elements in the Revit project. - Alternatively, use
All Elements of Categoryto select a specific type of element (e.g., all columns or all windows).
- Use the
-
Create an Array:
- Use the
Array.ByCurveorArraynode to create a linear array of the selected elements. - Connect the selected elements to the input of the array node.
- Use a
Line.ByStartPointAndEndPointnode to define the path for the array (e.g., a straight line along the x-axis).
- Use the
-
Add Control for Number of Elements:
- Use a
Slidernode to control the number of elements in the array. Connect the slider to theCountinput of theArraynode.
- Use a
Step 2: Vary the Properties of Model Elements
-
Add a Slider for Properties:
- Use a
Slidernode to create a control for a specific property you want to vary (e.g., height, spacing, or angle of rotation). - Set the range of the slider to reflect the desired range for the property.
- Use a
-
Use Code Blocks for Advanced Control:
- Create a
Code Blocknode for more complex expressions, such as adjusting the height or rotation of the elements based on the slider input. - Example code block to vary height:
[element.Height] = [slider value] - This code block can be connected to the
Set Parameternode to apply the height change to the array of elements.
- Create a
-
Set Parameter:
- Use the
Set Parameternode to modify specific parameters of the model elements, such as height, material, or visibility. - Connect the array of elements and the property values to the
Set Parameternode.
- Use the
-
Apply Rotation (Optional):
- If you want to rotate the array of elements, use the
Element.Transformnode. - Connect the array of elements and use a
Slidernode to control the angle of rotation. - You can use a
Rotationnode or aMatrixnode to define the rotation transformation.
- If you want to rotate the array of elements, use the
Detailed Dynamo Script for Creating an Array and Varying Properties
Here's an outline for a Dynamo script:
-
Select Model Elements:
- Use
Select Model ElementsorAll Elements of Category.
- Use
-
Create an Array:
- Use
Array.ByCurveorArray. - Connect a
Line.ByStartPointAndEndPointnode to define the array path. - Connect a
Sliderfor theCountinput.
- Use
-
Vary Properties:
- Use a
Sliderfor controlling the desired property (e.g., height, spacing). - Create a
Set Parameternode to apply the change to the selected model elements.
- Use a
-
Optional - Apply Rotation:
- Use
Element.Transformand aSliderto rotate elements. - Connect the rotation input to the desired angle from a
Slider.
- Use
Example Workflow for Varying the Height of Columns
- Select the Columns: Use the
Select Model Elementsnode to pick the columns. - Create an Array:
- Use the
Array.ByCurvenode with aLine.ByStartPointAndEndPointnode to define a path. - Connect a
Sliderfor theCountinput to control the number of columns.
- Use the
- Vary the Height:
- Connect a
Sliderfor the height of aSet Parameternode and select theHeightparameter of the columns.
- Connect a
- Run the Script: Adjust the sliders to see the number of columns and their heights change in real-time in Revit.
Using a Code Block for Advanced Property Control
- If you want to control the position or a more complex property, use a
Code Blockwith an expression like:height = slider_value; - Connect this output to the
Set Parameternode to modify the elements.
Final Steps: Run and Test the Dynamo Script
- Run the Dynamo script to create an array of elements and vary their properties.
- Adjust the sliders to test the changes in the number of elements and their properties.
- Check the results in Revit to ensure the array and parameter changes are applied as intended.
Summary
This guide covers how to create an array of model elements in Dynamo and use sliders or code blocks to vary their properties interactively. The combination of these tools allows for dynamic and flexible design adjustments directly within Revit.
4) Creating a conceptual mass in Revit and developing a parametric column involves several steps. This process can include creating a mass, dividing its surfaces, and applying panels that form a parametric pattern, similar to the approach used in parametric walkway modelling. Here’s a detailed step-by-step guide:
Step 1: Create a Conceptual Mass in Revit
-
Open Revit and Create a New Project:
- Start a new project or open an existing project.
- Go to the “Massing & Site” tab and select “In-Place Mass” to create a conceptual mass.
-
Define the Mass Shape:
- Choose the appropriate mass category, such as “Generic Models”.
- Use the available tools (e.g., “Extrusion,” “Revolve,” “Sweep,” “Blend,” or “Loft”) to create the shape of the column. You could create a simple cylindrical or rectangular mass as the base shape.
-
Finish the Mass:
- Once the shape is defined, click on “Finish Mass” to complete the creation of the mass.
Step 2: Divide the Surface of the Mass
-
Select the Mass:
- Select the mass you just created in the 3D view.
-
Divide the Surface:
- Go to the “Massing & Site” tab, and click on “Divide Surface”.
- Choose the surface of the mass that you want to divide. This will create a grid pattern on the surface of the mass.
-
Adjust the Divisions:
- Use the “Modify” options to adjust the grid pattern's size and alignment. You can use fixed or flexible divisions, or manually set the number of segments along each axis.
- You can also create custom division patterns by editing the grid manually or by applying specific rules.
Step 3: Apply Parametric Panels to the Mass
-
Create Panel Families:
- Create a panel family using the “Family Editor” in Revit. Design the panel shape (triangular, square, or bent panels) according to your requirements.
- Use “Reference Lines” and “Reference Planes” to create a parametric shape that can be adjusted based on parameters (e.g., size, rotation).
- Ensure that the panel family is a “System Family” if you plan to place them in the mass as system panels.
-
Load and Place Panels:
- Load the panel family into the project by going to “Insert” > “Load Family” and selecting your panel family file.
- Once loaded, select the “Place Panels” tool under the “Massing & Site” tab and click on the divided surface of the mass.
- Choose the type of panel you want to place (e.g., triangular or square panels) and apply it to the surface.
-
Adjust Parameters:
- Use “Instance” or “Type” parameters to control the properties of the panels.
- Adjust the parameters in the “Properties” panel to modify the size, rotation, and orientation of the panels on the surface of the mass.
- You can create a parameter-driven array or apply formulas in the family editor to control how the panels interact with the surface.
Step 4: Apply Patterns and Finishes
- Apply Material Finishes:
- Use the “Materials” tool to apply different finishes to the panels.
- Assign materials to the panel types and apply them to the panels on the mass. You can create custom materials for wood, metal, or other finishes in the “Materials” dialogue.
- Adjust Panel Orientation:
- If you want to create bent panels or change the orientation of the panels based on the surface curvature, apply constraints and modify the rotation angle to achieve the desired effect.
Step 5: Test and Refine the Parametric Column
-
Test Parametric Adjustments:
- Adjust the height, width, or rotation of the panels using the “Parameters” sliders or input values to test how the panels behave on the surface.
- Use the “Family Editor” to create more complex formulas or parameters for dynamic control of the panel layout.
-
Review and Finalize:
- Check the finished column in 3D view to ensure the panels are applied correctly and have the desired appearance.
- Refine the parameters and divisions as necessary to perfect the look and behaviour of the parametric column.
Bonus Tips for Workflow Efficiency
- Use Dynamo for Automation: For more complex parametric controls, you can use Dynamo to automate the division and placement of panels, allowing you to dynamically modify the grid or panel placement based on custom parameters.
- Create Adaptive Components: If you need the panels to adjust dynamically to the shape of the mass, consider creating adaptive components in the Family Editor that use points and reference lines to align with the mass surface.
By following these steps, you will be able to create a conceptual mass in Revit, divide its surface, and apply parametric panels that can be adjusted for a customizable and visually appealing column design.
5) Developing a parametric stadium in Dynamo involves creating a flexible, parametric model that can be adjusted based on different design requirements. To achieve this, we need to define key parameters that control the stadium's geometry, such as the number of tiers, the seating arrangement, and the shape of the structure. Below, I’ll outline the essential parameters, and explain how to use Dynamo to develop the model using visual programming concepts, concerning a parametric high-rise tower as discussed in class.
Step 1: Define Parameters for the Parametric Stadium
When modelling a stadium, it’s crucial to identify the parameters that will make the model adjustable and customizable. Here are some important parameters:
- Number of Tiers: The number of concentric seating levels.
- The radius of the Stadium: The distance from the centre point to the outer edge.
- Height of Each Tier: The vertical distance between each tier.
- Angle of Sector (or Number of Sectors): The angle covered by each sector (e.g., 360° divided by the number of sectors).
- Seating Capacity per Tier: The number of seats on each tier.
- Width of the Aisle: The space between the seating rows.
- Depth of the Stadium Bowl: The depth of the stadium from the lowest tier to the field level.
- Panel Size: The size and shape of the panels used for the exterior (e.g., triangular, square, or curved).
Step 2: Visual Programming in Dynamo for Parametric Stadium Modeling
To model the stadium using Dynamo, follow these steps:
Step 2.1: Create the Base Shape of the Stadium
-
Create a Center Point:
- Use a
Point.ByCoordinatesnode to create the centre point of the stadium.
- Use a
-
Create Circular Tiers:
- Use a
Circle.ByCenterPointRadiusNode to create circles representing each tier of the stadium. Connect the centre point to the input and use sliders or code blocks to control the radius and height for each tier.
- Use a
-
Create Levels for Each Tier:
- Use the
Level.ByNamenode to create levels for each tier. Connect a range of numbers to define the height of each level based on theHeight of Each Tierparameter.
- Use the
Step 2.2: Divide the Circular Surface into Seating Arrangements
-
Divide the Circular Surface:
- Use the
Divide SurfaceNode to create a grid of points on each circular tier. This will represent the positions where seating rows will be located.
- Use the
-
Adjust Grid Density:
- Use a
Sliderto control the number of divisions or density of the grid, which represents the number of seats in a row.
- Use a
-
Create Seating Rows:
- Connect the grid points to
Line.ByStartPointAndEndPointnodes to create lines representing the seating rows on each tier.
- Connect the grid points to
Step 2.3: Add a Parameter for the Angle of Sector
- Create Angular Sectors:
- Use a
Numbernode orCode BlockTo create the number of sectors. The total angle is 360°, so dividing it by the number of sectors gives the angle per sector. - Use the
Rotatenode to rotate the seating rows to create different sectors of the stadium.
- Use a
Step 2.4: Model the Stadium Bowl
-
Create the Stadium Bowl:
- Use
RevolveorSweepNodes to create the exterior shape of the stadium bowl. The input should be the profile curve created by connecting points at each tier.
- Use
-
Add Depth:
- Use the
Offsetnode to create the depth of the bowl, making sure the curve extends inward to form the seating tiers.
- Use the
Step 2.5: Model Exterior Panels (Optional)
- Create Panel Shapes:
- Create a simple panel family or use a
Rectangle.ByWidthHeightnode to create the shapes of panels that will be placed on the exterior of the stadium.
- Create a simple panel family or use a
- Apply Panels to the Exterior:
- Use the
Surface.ByPatchorArrayNodes to place the panels along the outer surface of the stadium, with the number of panels controlled by the angle of sectors and radius.
- Use the
Step 2.6: Add Parameters for Customization
-
Create Sliders:
- Add sliders for each parameter such as the number of tiers, radius, height, number of sectors, and panel size to make the model parametric.
-
Use Code Blocks:
- Use
Code BlockNodes to calculate the position and properties of the seating rows dynamically. For example:radius = [slider value]; height = [slider value]; numberOfSectors = [slider value];
- Use
-
Link Parameters to the Model:
- Connect the sliders and code blocks to the relevant nodes to ensure that changing the slider values updates the model in real time.
Step 3: Example Dynamo Script for Parametric Stadium
Here's a summary of how the script logic would be structured:
- Create the centre point.
- Generate circles for each tier using.
Circle.ByCenterPointRadius. - Create grid points on each circle using.
Divide Surface. - Generate lines for seating rows using.
Line.ByStartPointAndEndPoint. - Use the
Rotatenode to form sectors and distribute the seating arrangement. - Create the stadium bowl using
RevolveorSweep. - Add panels for the exterior finish using
Surface.ByPatchor an array of panels. - Link sliders and code blocks to all parameters for interactivity.
Step 4: Run and Test the Dynamo Script
- Run the script in Dynamo to generate the parametric stadium in Revit.
- Adjust the sliders to see how different parameters affect the stadium model (e.g., number of tiers, radius, sector angle).
- Review the final model in Revit and make any necessary adjustments for further refinement.
Final Thoughts
By following these steps, you can create a conceptual parametric stadium in Revit using Dynamo. This approach leverages visual programming and the concepts of parametric high-rise tower modelling to ensure the stadium is highly adjustable, scalable, and suitable for various design iterations.