Revit Analytique
Revit Analytique
Revit Analytique
Dynamo package
A. Overview
The Autodesk® Analytical Modeling 2020 Dynamo package helps structural engineers better
control and automate the creation of analytical models in Autodesk® Revit®. Create a complete
and consistent analytical model with parameterization, definition of logical assumptions, priorities,
and customizable scripting.
Customizable logic helps you create different rules-based analytical models for diverse types
of buildings and multiple analytical model variants for similar building structures, and allows you
to use similar patterns across projects.
A.2. Objectives
In Autodesk® Revit® 2020, the analytical model is created simultaneously with the
physical representation of the modelled construction. The analytical model can be then manually
modified and transferred to external software and used for static analysis and structural design.
In some cases, discontinuities, divergences and lack of integrity between its analytical
elements may be observed. These manual modification can be problematic and time-consuming.
The Autodesk® Analytical Modeling 2020 Dynamo package is a Autodesk® Dynamo-
based algorithm directed to modify the analytical model in Revit, basing on input settings
introduced by the user before executing the script.
B. Installation
B.1. System Requirements
Autodesk® Revit® 2020.x
Autodesk® Dynamo 2.1.x
B.4. Load the Autodesk Analytical Modeling 2020 Dynamo scripts in the
Dynamo Player
1. Select a Script Directory for Dynamo Player
2. Navigate to the %AppData%\Dynamo\DynamoRevit\2.1\packages\Autodesk Analytical
Modeling 2020 Dynamo\extra directory and select the script(-s):
a. Adjust Elements Between Categories.dyn - main algorithm, suitable for all
possible adjustments;
b. Adjust Elements within Category Only.dyn - sub-algorithm, limited to adjustments
within elements category only
B.5. Uninstall
Uninstall can be started from Windows Control Panel under Programs and Features tab.
C.1.6. Others
FilterElements.GetParameterValueById
Get the value of one of the element’s parameters using ID of the parameter
Library Dynamo4AM → Utilities → FilterElements
Input element Element to get the parameter value from
parameterID ID of the parameter
Output parameterValue Value of one of the element’s parameters of
the given ID
Remarks The alternative node to Dynamo’s
GetParameterValueByName
FilterElements.ClearIfTrue
Clears the list if Boolean value is true
Library Dynamo4AM → Utilities → FilterElements
Input obj List to check for clearing
boolean Boolean value determining if the list should be
cleared
Output var[]..[] The original list if Boolean is true, empty list if
Boolean is false
Remarks –
FilterElements.ClearIfFalse
Clears the list if Boolean value is false
Library Dynamo4AM → Utilities → FilterElements
Input obj List to check for clearing
boolean Boolean value determining if the list should not
be cleared
Output var[]..[] The original list if Boolean is false, empty list if
Boolean is true
Remarks –
C.2. Definition
Definition group contains nodes responsible for building a filtering sentence. Filtering
sentences add labels to lists of objects and passing them to translation nodes. Filtering itself,
basing on the labels, is performed inside the translation nodes so actions are performed on the
filtered elements. After all full list of objects may be returned and passed to other nodes.
Composition of filters is called a filtering schedule here.
Example: Peek Column
Filters.PickColumns
Defines way of filtering objects from the selection: extract all columns from the selection
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
Output selection A list of objects and filtering schedule, including the line
executing extraction of columns from the selection
Remarks This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.PickElementsOfCategory
Defines way of filtering objects from the selection: extract all elements of the given category
from the selection
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
elementCatego Identifier of the category to be extracted from the selection
ry
Output selection A list of objects and filtering schedule, including the line
executing extraction of elements of the given category from
the selection
Remarks Identifiers of the category are integer numbers and indicate
elements that are recognized and manipulated by the
script. It includes:
1 – Framing, 2 – columns, 3 – floors, 4 – walls.
This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.PickElementsOfType
Defines way of filtering objects from the selection: extract all elements of the given types from
the selection
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
type0 Element types to be extracted from the selection
... Use plus and minus icons to add more types to the
definition
Output selection A list of objects and filtering schedule, including the line
executing extraction of elements of the given types from the
selection
Remarks Types are labels passed from the Revit → Selection →
Family Types, Floor Types or Wall Types nodes.
This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.PickFloors
Defines way of filtering objects from the selection: extract all floors from the selection
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
Output selection A list of objects and filtering schedule, including the line
executing extraction of floors from the selection
Remarks This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.PickFraming
Defines way of filtering objects from the selection: extract framing (beams and braces) from
the selection
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
Output selection A list of objects and filtering schedule, including the line
executing extraction of framing from the selection
Remarks This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.PickWalls
Defines way of filtering objects from the selection: extract walls from the selection
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
Output selection A list of objects and filtering schedule, including the line
executing extraction of walls from the selection
Remarks This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.PickLinearElements
Defines way of filtering objects from the selection: extract all linear elements (beams, braces
and columns) from the selection
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
Output selection A list of objects and filtering schedule, including the line
executing extraction of linear elements from the selection
Remarks This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.PickPlanarElements
Defines way of filtering objects from the selection: extract all planar elements (floors and
walls) from the selection
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
Output selection A list of objects and filtering schedule, including the line
executing extraction of planar elements from the selection
Remarks This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.PickNothing
Defines way of filtering objects from the selection: do not extract anything
Library Dynamo4AM → Definition → Filters
Input selection Any list of objects and filtering schedule, if defined
Output selection A list of objects and filtering schedule, including the line
excluding all elements from the selection
Remarks This node does not filter elements but flattens the input list
and adds a filtering label at its end.
The filtering will be executed by translation nodes.
Filtering may be also performed by the Filters.Peek node.
Filters.Peek
Filters objects basing on a defined filtering schedule
Library Dynamo4AM → Definition → Filters
Input selection Any set of objects and a filtering schedule, if defined
preview Whether the filtered elements should be changed for lines
and surfaces that are visualized in Dynamo preview
Output output A list of elements that are extracted from the selection
basing on the defined filtering schedule
Remarks Filtering is also executed inside translation nodes.
LinePoints.SetStartPoint
Moves a start point of a linear analytical element to coordinates defined as the new point
Library Dynamo4AM → ModelManagement → LinePoints
Input obj A linear analytical element to modify
newEndPoint New end point of an analytical element
Output element The modified element
Remarks An analytical element as well as physical element may
be given
LinePoints.SetEndPoint
Moves an end point of a linear analytical element to coordinates defined as the new point
Library Dynamo4AM → ModelManagement → LinePoints
Input obj A linear analytical element to modify
newStartPoint New start point of an analytical element
Output element The modified element
Remarks An analytical element as well as physical element may
be given.
LinePoints.SetPoints
Moves start and end points of a linear analytical element to coordinates defined as the new
points
Library Dynamo4AM → ModelManagement → LinePoints
Input obj A linear analytical element to modify
newPoints New start and end points of an analytical element
Output element The modified element
Remarks An analytical element as well as physical element may
be given.
FloorBoundary.SetFloorBoundaryByPerimeterCurves
Changes floor boundary to curves defined as input
Library Dynamo4AM → ModelManagement → FloorBoundary
Input element A floor to modify
newPoints A list of curves following the new boundary of an
analytical floor
Output element The modified floor
Remarks An analytical element as well as physical element may
be given.
Number of curves in the new boundary must be the
same as in the old boundary. Set curve types (linear or
non-linear) must reflect the set of the old boundary.
FloorBoundary.SetFloorBoundaryByPerimeterPoints
Changes floor boundary to curves defined by input vertices
Library Dynamo4AM → ModelManagement → FloorBoundary
Input element A floor to modify
newPoints A list of new floor vertices
Output element The modified floor
Remarks An analytical element as well as physical element may
be given.
Number of curves in the new boundary must be the
same as in the old boundary. Set curve types (linear or
non-linear) must reflect the set of the old boundary.
All the elements that are out of the selection will not be considered by the script at all and
will not be modified.
Selection mode allows the user to pick all objects included in the selection box drawn in
the active view in Revit. All objects – structural and non-structural – included in the selection range
are automatically counted.
The algorithm checks which of selected physical objects contains analytical model. If the
Enable analytical model parameter of an element is off, the element will be taken as non-structural
object and, together with other non-structural elements (e.g. railings, pipes, symbols), will be
filtered out after launching the script.
The algorithm recognizes four types (categories) of structural elements in Revit models:
- Framing (beams and braces),
- Columns,
- Floors (including foundation slabs),
- Walls.
The user can decide what type of elements is the first priority element. The first priority
elements act like master elements and are snapping slave elements to themselves.
Geometry of the first priority elements will be modified only if starting from default analytical
model or adjusting elements within category was selected.
D.1.4. Tolerance
Tolerance is a measurement of proximity.
If elements defined as master and slave are close enough, the slave elements are snapped to
master elements. Otherwise, the slave elements are not snapped the master elements.
When the Force tolerance to change to True when the Run script button is pressed, a pop-up
dialog will appear.
- Absolute tolerance - it is a single value for the entire project in current project’s unit.
Unit of the tolerance is the same as the length unit set in the Revit project (Manage → Project
Units)
This option does not consider user-input tolerance and simply draws element’s nodes to
the nearest level.
After adjusting between first, second and third priority elements will be performed, the
script can adjust elements of the same type (category).
Note: Analytical walls are not take in consideration with this mode.
Objects of greater importance are called master elements and objects of lower importance
are considered as slaves. The slaves are adjusted to masters of the same category.
The importance of an element is determined by:
- For Framings:
o If framing elements are of different cross-section area, one with bigger value is
chosen as master element
o If framing elements are of the same cross-section area, inclination is taken into
account – more horizontal beams or braces are considered as masters.
- For Columns:
o If column elements are of different cross-section area, one with bigger value is
chosen as master element
o If column elements are of the same cross-section area, inclination is taken into
account – more vertical columns are considered as master for sloped columns,
- For Floors and Slabs:
o If floor elements are of different thickness, one with bigger value is chosen as
master element
o If floor elements are of the same thickness, due to lack of inclination, floor ID
number is taken into account. In most cases, it results in older element considered
being master to newer element.
Note: Cross-section area cannot be obtained directly from Revit, thus it is calculated in average,
as a volume divided by elements length. This can lead to different results in objects with voids.
D.2. Dataflow
D.3. Dynamo scripts
D.3.1. Adjust Elements between Categories
All node groups can be divided according to their color (non-grouped nodes serves
organizational purpose):
- Data inputs,
- Additional operations,
- Adjustment operations,
- Visualization,
- Tolerance interface.
Adjustment operation node groups are core elements of the script as they adjust elements
according to priorities, each node group consist of:
- Input passing nodes (model elements, category of master and slave elements,
tolerance),
- Filtering nodes
- Translation node.
Additional operations node groups are simpler as they working with whole selection, each one
consists of:
- Input passing nodes (they will pass selection to main operation node or to output node
depending on input options, for adjustment between categories additional node will be
present passing tolerance),
- Main operation node (different for each node group)
- Output node.