Portal Frame Geometry in Dynamo


In this post I would like to show you how to create a fully parametrized portal frame geometry in the Dynamo environment.

Recently, I added a few Dynamo nodes to the Structural Design package(version 1.1) to help you create such structural geometry.

Generally portal frames are used for single-story buildings, but they can also be used for low-rise buildings with several floors where they can be economical if the floors do not span across the building.

Let me walk you through details on these nodes and how to put together a sample script using them.

The first two nodes I would like to talk about create a 2D frame geometry (Fame.ByWidthHeights, Frame.ByWidthHeightAngles). They do the same thing and they differ by input parameters only.

insertionPointInsertion Point. Default value: (0, 0, 0)
vectorVector in the 2D frame plane. Default value: (1, 0, 0)
widthFrame width
height1Column height
height2Roof height

angleBeam angle. The angle has to be greater than or equal 0 and less or equal than 60 degrees.

The Frame.Copy node helps you duplicate your 2D input frame geometry with a specified spacing between frames. The spacing can be equal of varying.

frame2DGeometry2D Frame geometry. Input value should have the following data structure: Curve[Column[], Beam[]]
withEqualSpacingSpacing type. True = equal spacing, False = varying spacing.
numberOfTimesNumber of times a 2D frame should be copied when spacing between frames is equal.
spacingSpacing value between frame when distance between them is equal.
varyingSpacingVarying spacing. Default value: [6, 5, 4, 5, 6]
flipToggles the frame orientation.

The Frame.Purlins node creates purlins elements  between rafters.

numberNumber of purlins.
– Start offset.
dp2– End offset.

The SideRailsEavesBeams node creates side rails and eaves beams between columns.

columns – Frame columns.
heightsZ coordinates of beam ends.

The last two nodes I would like to talk about create X and V bracings.


pointsElement end points.

zones – Frame zones. A zone is a space between 2D frames, e.g. between frame #1 and frame #2 we have zone #1, between frame #2 and frame #3 we have zone #2 etc…

Building a sample script using the nodes I covered is easy. Simply connect these nodes in this way…

…to get the following output:

The final script covered in this post can be found in the extra folder of the Structural Design package.

For more posts on the Structural Design package, check out these past articles on the Revit blog:

Learn the Power of Dynamo for Automated Reinforcement Detailing – Part 1

Learn the Power of Dynamo for Automated Reinforcement Detailing – Part 2

Structural Design package version 1.0.5

With the Structural Analysis for Dynamo package, structural engineers can optimize and automate their workflows to improve their productivity. Learn more:

Portal Frame with Structural Analysis for Dynamo Package – Part 01


Tomasz Fudala

Tomasz Fudala is the Technical Marketing Manager for Structure. He has over 17 years of experience in the software industry and a comprehensive background and vast knowledge of structural solutions in the Autodesk portfolio. With a Structural Engineering background he is responsible for technical sales readiness. He achieved a Master of Science degree in Structural Engineering from the Cracow University of Technology, Poland. Find him on Twitter @tomekf

Try Revit 2023 Free for 30 Days

1 comment

  1. vmeyzaguirre

    Hola un gusto sabes una pregunta realiza el portal pero me falla en lo siguiente, no me da la altura inclinada de las dos pendientes la cubierta me la hace en forma recta, recien aprendo Dynamo para Revit, gracias muy bueno.

Add comment