Você está na página 1de 19

Autodesk Analytical Modeling 2020

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.1. General Definition


The solution is based on Autodesk® Dynamo algorithms and has been designed for usage
in Autodesk® Revit®. The algorithm was designed to work in both: the Autodesk® Dynamo Player
feature in Autodesk® Revit®. 2020 or directly in the Autodesk® Dynamo environment
Most nodes used in the solution are designed especially for the software tasks and should
be loaded to the Autodesk® Dynamo environment to execute the scripts completely. They have
been designed as zero-touch nodes.
The provided algorithms may be complemented with other nodes, also the default ones
that are available in the Autodesk® Dynamo environment without installing add-ins or extra
packages – e.g. responsible for basic algebraic operations and list manipulations.

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.2. Package Components


Bin:
- Dynamo4AMGui.dll
- Dynamo4AMLib.dll
- log4net.dll
Extra:
- Adjust Elements Between Categories.dyn
- Adjust Elements within Category Only.dyn
- Dynamo4AMLibLog4Net.config
- Autodesk Analytical Modeling 2020 Dynamo Package.docx

B.3. Install Autodesk Analytical Modeling 2020 Dynamo Package

1. Download the package from


2. Run Dynamo4AM.msi from ...\Dynamo4AM.1.0.0.38\bin directory

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. Dynamo Nodes for Analytical Modeling


The library of Analytical Modeling nodes can be used to supplement the Dynamo scripts with
new procedures. These nodes can be used by the provided scripts, as well as used outside the
solution, in other user’s Dynamo algorithms.
C.1. Utilities
C.1.1. Physical vs. Analytical
FilterElements.IsAnalyticalElement
Determines if the given object is an analytical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is an analytical element
Remarks Analytical elements are:
- Analytical framing (analytical beams and
analytical braces),
- Analytical columns,
- Analytical floors
- Analytical walls.
Other kinds of objects are considered non-
analytical elements.
See also:
FilterElements.IsValidAnalyticalElement
FilterElements.IsPhysicalElement
Determines if the given object is a physical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is a physical element
Remarks Physical elements are:
- Structural framing (structural beams,
structural braces, note that there is no
architectural framing),
- Architectural and structural columns,
- Architectural or structural floors
- Architectural and structural walls.
Other kind of objects are considered non-physical
elements.
FilterElements.IsValidAnalyticalElement
Determines if the given object is a valid analytical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is a valid analytical element
Remarks Invalid analytical elements are considered
analytical elements that contain at least one non-
linear segment (e.g. curved beams or floors with
arc boundary segments) or are sloped (non-
horizontal) analytical floors.
FilterElements.HasAnalyticalElement
Determines if the given object has an analytical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
validOnly Determines if the analytical element should be
valid. Invalid analytical elements are considered
analytical elements that contain at least one non-
linear segment (e.g. curved beams or floors with
arc boundary segments) or are sloped (non-
horizontal) analytical floors.
See also:
FilterElements.IsValidAnalyticalElement
Output bool Whether the object is a planar physical or
analytical element
Remarks Analytical elements are usually associated with
physical elements that are set to structural.
Analytical model can be disabled in parameters
of structural elements – in this case false is
returned.
Architectural elements are not associated with
analytical elements – in their case false is
returned.
FilterElements.GetAnalyticalElement
Extracts an analytical element from the physical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to extract an analytical element from
validOnly Determines if the analytical element should be
valid. Invalid analytical elements are considered
analytical elements that contain at least one non-
linear segment (e.g. curved beams or floors with
arc boundary segments) or are sloped (non-
horizontal) analytical floors.
See also:
FilterElements.IsValidAnalyticalElement
Output analyticalElement The analytical element extracted from the given
object
Remarks If object is not a physical element, null is
returned.
If object is a physical element and has no
analytical element, null is returned.
If object is an analytical element, the analytical
element itself is returned with no change.
If validOnly is set as true and the extracted
analytical element is invalid, null is returned.
FilterElements.GetPhysicalElement
Retrieves a physical element that owns the given analytical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to retrieve a physical element for
Output physicalElement The physical element retrieved for the given
analytical element
Remarks If the given object is not an analytical element,
null is returned
C.1.2. Filter by Element Structural Type
FilterElements.IsFraming
Determines if the given object is physical or analytical framing.
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is physical or analytical
framing
Remarks Framing category covers both: beams and
braces.
FilterElements.IsColumn
Determines if the given object is a physical or analytical column.
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is a physical or analytical
column
Remarks –
FilterElements.IsFloor
Determines if the given object is a physical or analytical floor
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is a physical or analytical
floor
Remarks –
FilterElements.IsWall
Determines if the given object is a physical or analytical wall
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is a physical or analytical wall
Remarks –

C.1.3. Filter by Element Type


FilterElements.IsLinearElement
Determines if the given object is a linear physical or analytical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is a linear physical or
analytical element
Remarks Linear elements are: framing (beams and braces)
and columns.
FilterElements.IsPlanarElement
Determines if the given object is a planar physical or analytical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object to check
Output bool Whether the object is a planar physical or
analytical element
Remarks Planar elements are: floors and walls.
C.1.4. Geometry
FilterElements.GetPointsFromAnalyticalElement
Returns a list of points of the analytical element
Library Dynamo4AM → Utilities → FilterElements
Input obj Object containing the analytical element or the
analytical element itself to retrieve the points for
Output points Points retrieved from the analytical element
Remarks If object has no an analytical element or is not an
analytical element itself, null is returned.
In case of linear analytical elements: start and
end points are retrieved. In case of analytical
floors or walls: vertices are retrieved.
FilterElements.GetCurveFromAnalyticalElement
Transforms the linear analytical element into curve
Library Dynamo4AM → Utilities → FilterElements
Input obj Object containing the linear analytical element or
the analytical element itself to transform into
curve
Output curve A curve transformed from the linear analytical
element
Remarks If object has no an analytical element or is not an
analytical element itself, null is returned.
In case of planar elements, null is returned.
See also: FilterElements.IsLinearElement
FilterElements.GetSurfaceFromAnalyticalElement
Transforms the linear analytical element into curve
Library Dynamo4AM → Utilities → FilterElements
Input obj Transforms the planar analytical element into
surface and, alternatively, external edges
includeBoundaries Whether the output should contain external
edges or surface only
Output output A surface and, alternatively, edge curves
transformed from the planar analytical element
Remarks If object has no an analytical element or is not an
analytical element itself, null is returned.
In case of linear elements, null is returned.
See also: FilterElements.IsPlanarElement
C.1.5. Grouping
FilterElements.GroupElementsByCategory
Groups physical elements by categories: framing, columns, floors and walls
Library Dynamo4AM → Utilities → FilterElements
Input objects List of objects to group by categories
Output framing List of physical framing found in the input list
columns List of physical columns found in the input list
floors List of physical floors found in the input list
walls List of physical walls found in the input list
Remarks Non-physical objects are filtered out.
FilterElements.GroupElementsByGeometry
Groups physical elements by geometrical profile: linear elements or planar elements
Library Dynamo4AM → Utilities → FilterElements
Input objects List of objects to group by geometry
Output linearElements List of linear physical elements found in the input
list
planarElements List of planar physical elements found in
Remarks Non-physical objects are filtered out.

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.

C.3. Model Management and Translation


This group includes all the nodes responsible for edition of analytical elements.
They were divided into two groups:
- Model Management – focusing on edition of single elements
- Translation nodes, responsible for searching of disconnections and fixing them.

C.3.1. Model Management Group


The nodes of the Model Management group can be used to define translations of analytical
elements by vectors you can derive in your own way. In turn, the Translation nodes derive
translation vectors by pre-defined procedures.

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.

C.3.2. Translation Nodes


Translation node is custom Zero Touch node that handles all the adjustments between master
and slave selections. Those selections can be composed of any model elements, node will extract
supported analytical elements from them and then resolve supported relations.

D. About Autodesk Analytical Modeling 2020 Dynamo


Package

D.1. Input Data


D.1.1. Model Elements

Analytical elements used in script are:


- Analytical framings – in case of structural beams and braces,
- Analytical columns – in case of structural columns,
- Analytical floors – in case of structural floors
- Analytical walls – in case of structural walls.
The algorithm is performed on the selected part of the model (can be the entire model).
Selection may be physical elements, analytical elements or both.

The algorithm operates on both physical and analytical objects.


Other kinds of objects, such as windows and stairs, are filtered out of the selection right
after launching the script. In case of selecting physical elements only, the analytical elements are
obtained directly from the selected physical objects.

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.

D.1.2. Elements Priority

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.3. Start from Default Analytical Model


This option simulates manual modification of analytical elements placement in regard to
their physical objects via their properties sets and selecting: Center of Element.
Setting this option as True forces the analytical elements to be moved prior the analysis
in the following way:
- Analytical beams are moved to the centerlines of the physical beams, along their
axis,
- Analytical braces are moved to the centerlines of physical braces, along their axis,
- Analytical columns are moved the center of physical columns, along their axis,
- Boundaries of analytical floors are coherent with boundaries of their physical
bodies; the analytical floors are levelled at the face in the middle of physical floors
thickness,
- Boundaries of analytical walls are coherent with boundaries of their physical
bodes and are placed in the centerline of physical walls.

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.

There are two types of tolerance to choose:


- Relative tolerance, calculated as percentage of each element’s bigger dimension in
cross section or its thickness in case of floors and walls. This type of tolerance will be
different for each of the elements.

- 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)

If the tolerance is abnormally huge, a warning will be displayed.

D.1.5. Snap Elements to Levels

This option does not consider user-input tolerance and simply draws element’s nodes to
the nearest level.

D.1.6. Adjust Elements within Category

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.

D.3.2. Adjust Elements within Category Only


- Provides fever options, while its main aim is to utilize Adjust elements within category from
previous script.
D.4. Dynamo Model Preview
Dynamo algorithm allows a user to preview changes introduced to the Revit analytical model.
Such the preview can be displayed in the Dynamo environment only.
Geometry is printed according to key:
- Grey – unchanged elements
- Red – initial geometry of changed elements,
- Green – end geometry of changed elements,
- Blue – translation vectors.
D.5. Logging
Warning windows are displayed by adjusting blocks.
Delivered Dynamo script consists of four adjusting blocks hence four warning windows
may appear if each of the blocks attempts to operate on not supported elements. Warning
windows do not block nor stop processing of the whole script.
Reported elements are automatically omitted.
Warnings or errors are printed to the log file: Dynamo4AMLib.log
This file is located in:
%AppData%\Dynamo\Dynamo Revit\2.1\packages\Autodesk Analytical Modeling 2020 Dynamo\bin

or near the REVIT project file.

Você também pode gostar