SlideShare a Scribd company logo
1 of 45
Download to read offline
1
Contents
1. Introduction ............................................................................................... 3
1.1. What is Dynamo...................................................................................3
1.2. The interface.........................................................................................3
1.3. Definitions............................................................................................4
1.3.1. Nodes ...................................................................................................4
1.3.2. Wires ....................................................................................................5
1.3.3. Ports .....................................................................................................5
1.4. An example...........................................................................................6
2. Working with Data .................................................................................... 6
2.1. Data types .............................................................................................6
2.2. Math functions......................................................................................6
2.3. Working with Text String.....................................................................7
2.4. Working with a List..............................................................................7
2.5. Code Block.........................................................................................10
2.6. Custom Node......................................................................................13
2.7. Functions ............................................................................................15
2.8. Working with Excel............................................................................15
2.8.1. Reading data.......................................................................................16
2.8.2. Writing data........................................................................................17
3. Designing Geometry................................................................................ 19
3.1. Overview ............................................................................................19
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
1
Contents
1. Introduction ............................................................................................... 3
1.1. What is Dynamo...................................................................................3
1.2. The interface.........................................................................................3
1.3. Definitions............................................................................................4
1.3.1. Nodes ...................................................................................................4
1.3.2. Wires ....................................................................................................5
1.3.3. Ports .....................................................................................................5
1.4. An example...........................................................................................6
2. Working with Data .................................................................................... 6
2.1. Data types .............................................................................................6
2.2. Math functions......................................................................................6
2.3. Working with Text String.....................................................................7
2.4. Working with a List..............................................................................7
2.5. Code Block.........................................................................................10
2.6. Custom Node......................................................................................13
2.7. Functions ............................................................................................15
2.8. Working with Excel............................................................................15
2.8.1. Reading data.......................................................................................16
2.8.2. Writing data........................................................................................17
3. Designing Geometry................................................................................ 19
3.1. Overview ............................................................................................19
2
3.2. Points ..................................................................................................21
3.3. Vectors................................................................................................21
3.4. Curves.................................................................................................22
3.5. Surfaces ..............................................................................................23
3.6. Solids ..................................................................................................24
3.7. Importing Geometry...........................................................................25
4. Interacting with Revit .............................................................................. 26
4.1. Selection .............................................................................................26
4.2. Edition ................................................................................................29
4.3. Creation ..............................................................................................30
4.4. Adaptive Component Placement........................................................32
4.5. Unfolding Elements............................................................................34
4.5.1. Unfolding a Cuboid............................................................................34
4.5.2. Unfolding a Sphere ............................................................................35
4.6. Dynamo for Rebar..............................................................................37
4.7. Pile Placement ....................................................................................38
4.8. Working with Mass ............................................................................40
4.8.1. Creating the Surface...........................................................................40
4.8.2. Creating Revit Elements ....................................................................44
5. References ............................................................................................... 45
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
2
3.2. Points ..................................................................................................21
3.3. Vectors................................................................................................21
3.4. Curves.................................................................................................22
3.5. Surfaces ..............................................................................................23
3.6. Solids ..................................................................................................24
3.7. Importing Geometry...........................................................................25
4. Interacting with Revit .............................................................................. 26
4.1. Selection .............................................................................................26
4.2. Edition ................................................................................................29
4.3. Creation ..............................................................................................30
4.4. Adaptive Component Placement........................................................32
4.5. Unfolding Elements............................................................................34
4.5.1. Unfolding a Cuboid............................................................................34
4.5.2. Unfolding a Sphere ............................................................................35
4.6. Dynamo for Rebar..............................................................................37
4.7. Pile Placement ....................................................................................38
4.8. Working with Mass ............................................................................40
4.8.1. Creating the Surface...........................................................................40
4.8.2. Creating Revit Elements ....................................................................44
5. References ............................................................................................... 45
3
DYNAMO REPORT
1. Introduction
1.1. What is Dynamo
Dynamo is primarily a plug-in for Autodesk Revit and Vasari. Dynamo can
also run as a stand-alone application with all the list and logic functionality, and with
some experimental geometry tools available using the Autodesk Shape Manager
kernel.
Dynamo allows designers to design custom computational design and
automation processes through a node-based Visual Programming interface. This means
that a designer can leverage computational concepts, without the need to write code. In
addition, Dynamo gives the designer the added advantage of being able to leverage
computational design workflows within the context of a BIM environment. The
designer is able to construct custom systems to control Vasari Families and
Parameters.
1.2. The interface
After finishing Revit installation and Dynamo plug-in, the Dynamo icon may
appear on the ribbon named Visual Programming.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
3
DYNAMO REPORT
1. Introduction
1.1. What is Dynamo
Dynamo is primarily a plug-in for Autodesk Revit and Vasari. Dynamo can
also run as a stand-alone application with all the list and logic functionality, and with
some experimental geometry tools available using the Autodesk Shape Manager
kernel.
Dynamo allows designers to design custom computational design and
automation processes through a node-based Visual Programming interface. This means
that a designer can leverage computational concepts, without the need to write code. In
addition, Dynamo gives the designer the added advantage of being able to leverage
computational design workflows within the context of a BIM environment. The
designer is able to construct custom systems to control Vasari Families and
Parameters.
1.2. The interface
After finishing Revit installation and Dynamo plug-in, the Dynamo icon may
appear on the ribbon named Visual Programming.
4
 Part A: Pulldown Menus
 Part B: Search Bar
 Part C: Node Library
 Part D: Workspace
 Part E: Execution Bar
1.3. Definitions
1.3.1. Nodes
Nodes have input Ports on the left side and output Ports on the right side.
Directionality of execution and program flow usually goes left to right.
 Nodes are the objects you place and connect together with Wires to form
a visual program.
 Nodes can represent Revit Elements like Model Lines or Reference
Points.
 Nodes can also represent operations like Math Functions.
 Nodes have inputs and outputs.
 The colors of Nodes change to indicate state.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
4
 Part A: Pulldown Menus
 Part B: Search Bar
 Part C: Node Library
 Part D: Workspace
 Part E: Execution Bar
1.3. Definitions
1.3.1. Nodes
Nodes have input Ports on the left side and output Ports on the right side.
Directionality of execution and program flow usually goes left to right.
 Nodes are the objects you place and connect together with Wires to form
a visual program.
 Nodes can represent Revit Elements like Model Lines or Reference
Points.
 Nodes can also represent operations like Math Functions.
 Nodes have inputs and outputs.
 The colors of Nodes change to indicate state.
5
1.3.2. Wires
Wires connect between Nodes to create relationships and establish a program
flow. You can think of them literally as electrical wires that carry pulses of
information from one object to the next.
 You create a Wire using the mouse left-clicking on an output Port and
dragging with the mouse button held down, then connect to the input
port of another node.
 To disconnect a Wire, left-click on the output Node and pull the Wire
away.
1.3.3. Ports
Ports are the light rectangular areas on Nodes, they are the receptors for Wires.
Information flows through the Ports from left to right.
 Inputs Ports are on the left side of the Node.
 Outputs Ports are on the right side of the Node.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
5
1.3.2. Wires
Wires connect between Nodes to create relationships and establish a program
flow. You can think of them literally as electrical wires that carry pulses of
information from one object to the next.
 You create a Wire using the mouse left-clicking on an output Port and
dragging with the mouse button held down, then connect to the input
port of another node.
 To disconnect a Wire, left-click on the output Node and pull the Wire
away.
1.3.3. Ports
Ports are the light rectangular areas on Nodes, they are the receptors for Wires.
Information flows through the Ports from left to right.
 Inputs Ports are on the left side of the Node.
 Outputs Ports are on the right side of the Node.
6
1.4. An example
There is a beginning example about how it work in Dynamo environment. This
program help us create a reference point by coordinates (x,y,z).
 Input port: x,y,z values
 Output port: a reference point
Let’s see the connectivity between them:
2. Working with Data
2.1. Data types
There are three types of data that can be used in Dynamo: number, string and
boolean. User can choose one of them or more depend on what kind of input
requirements in each program.
2.2. Math functions
Dynamo is used to create algorthims that take input(s), extract and process the
input's data to return an output or outcome. Here you can see we have a series of
mathematical operators or functions like addition, subtraction, multiplication and
division…Or having some functions like less than one another, equal to or not equal
to…
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
6
1.4. An example
There is a beginning example about how it work in Dynamo environment. This
program help us create a reference point by coordinates (x,y,z).
 Input port: x,y,z values
 Output port: a reference point
Let’s see the connectivity between them:
2. Working with Data
2.1. Data types
There are three types of data that can be used in Dynamo: number, string and
boolean. User can choose one of them or more depend on what kind of input
requirements in each program.
2.2. Math functions
Dynamo is used to create algorthims that take input(s), extract and process the
input's data to return an output or outcome. Here you can see we have a series of
mathematical operators or functions like addition, subtraction, multiplication and
division…Or having some functions like less than one another, equal to or not equal
to…
7
2.3. Working with Text String
Here is the ChangeCase node, this node take two inputs: the string, which we
already have in the workspace.
With String.Length function, the result will show a number of characters in a
input string.
2.4. Working with a List
Another powerful aspect of using Dynamo is the ability to process more than
one and piece of information at a time.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
7
2.3. Working with Text String
Here is the ChangeCase node, this node take two inputs: the string, which we
already have in the workspace.
With String.Length function, the result will show a number of characters in a
input string.
2.4. Working with a List
Another powerful aspect of using Dynamo is the ability to process more than
one and piece of information at a time.
8
For this example, let's go ahead and use three inputs and we'll also drag in
maybe three Integer Sliders to plug into ListCreate node. Or maybe in some cases we
can use Number Slider instead of Integer Slider.
Another case will show how to use a list of data as inputs:
 Calculate the sum of a list.
 Calculate the square root of numbers in a list.
An example of creating a list by using Range node:
There are some simple nodes related to managing a list in Dynamo:
 Index of a list:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
8
For this example, let's go ahead and use three inputs and we'll also drag in
maybe three Integer Sliders to plug into ListCreate node. Or maybe in some cases we
can use Number Slider instead of Integer Slider.
Another case will show how to use a list of data as inputs:
 Calculate the sum of a list.
 Calculate the square root of numbers in a list.
An example of creating a list by using Range node:
There are some simple nodes related to managing a list in Dynamo:
 Index of a list:
9
 Give a total number in a list & combine two lists into one.
 Drawing circles and polygons depend on a list:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
9
 Give a total number in a list & combine two lists into one.
 Drawing circles and polygons depend on a list:
10
 List.Map Function:
Let’s see the example as belows:
Notice that the List.Count node has no input. It is being used as a function, so
the List.Count node will be applied to every individual list one step down in the
hierarchy. The blank input of List.Countcorresponds to the list input of List.Map.
2.5. Code Block
Code blocks are a window deep into DesignScript, the programming language
at the heart of Dynamo. Built from scratch to support exploratory design workflows,
DesignScript is a readable and concise language that offers both immediate feedback
to small bits of code and also scales to large and complex interactions. DesignScript
also forms the backbone of the engine that drives most aspects of Dynamo “under the
hood”. Because nearly all of the functionality found in Dynamo nodes and interactions
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
10
 List.Map Function:
Let’s see the example as belows:
Notice that the List.Count node has no input. It is being used as a function, so
the List.Count node will be applied to every individual list one step down in the
hierarchy. The blank input of List.Countcorresponds to the list input of List.Map.
2.5. Code Block
Code blocks are a window deep into DesignScript, the programming language
at the heart of Dynamo. Built from scratch to support exploratory design workflows,
DesignScript is a readable and concise language that offers both immediate feedback
to small bits of code and also scales to large and complex interactions. DesignScript
also forms the backbone of the engine that drives most aspects of Dynamo “under the
hood”. Because nearly all of the functionality found in Dynamo nodes and interactions
11
have a one-to-one relationship with the scripting language, there are unique
opportunities to move between node-based interactions and scripting in a fluid way.
In short, code blocks are a text-scripting interface within a visual-scripting
environment. They can be used as numbers, strings, formulas, and other data types.
The code block is designed for Dynamo, so one can define arbitrary variables in the
code block, and those variables are automatically added to the inputs of the node:
 Query action:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
11
have a one-to-one relationship with the scripting language, there are unique
opportunities to move between node-based interactions and scripting in a fluid way.
In short, code blocks are a text-scripting interface within a visual-scripting
environment. They can be used as numbers, strings, formulas, and other data types.
The code block is designed for Dynamo, so one can define arbitrary variables in the
code block, and those variables are automatically added to the inputs of the node:
 Query action:
12
There are a few basic shorthand methods in the code block which, simply put,
make data management a lot easier. We'll break down the basics below and discuss
how this shorthand can be used both for creating and querying data.
Data Type Standard Dynamo Code Block Equilvalent
Numbers
Strings
Sequences
Ranges
Get Item at Index
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
12
There are a few basic shorthand methods in the code block which, simply put,
make data management a lot easier. We'll break down the basics below and discuss
how this shorthand can be used both for creating and querying data.
Data Type Standard Dynamo Code Block Equilvalent
Numbers
Strings
Sequences
Ranges
Get Item at Index
13
Create List
Concatenate Strings
Conditional Statements
 Advanced Ranges:
Creating advanced ranges allows us to work with list of lists in a simple
fashion. In the examples below, we're isolating a variable from the primary range
notation, and creating another range of that list.
Creating nested ranges, compare the notation with a "#" vs. the notation
without. The same logic applies as in basic ranges, except it gets a little more complex.
By controlling the "end" value in a range, we create more ranges of differing lengths.
2.6. Custom Node
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
13
Create List
Concatenate Strings
Conditional Statements
 Advanced Ranges:
Creating advanced ranges allows us to work with list of lists in a simple
fashion. In the examples below, we're isolating a variable from the primary range
notation, and creating another range of that list.
Creating nested ranges, compare the notation with a "#" vs. the notation
without. The same logic applies as in basic ranges, except it gets a little more complex.
By controlling the "end" value in a range, we create more ranges of differing lengths.
2.6. Custom Node
14
The custom node environment is different from the Dynamo graph
environment, but the interaction is fundamentally the same. With that said, let's create
our first custom node.
Here is an example that we have seen before:
Now we get started to create a custom node and it seems like a sub-program.
The important thing is that we have to indicate the exact input and output for this
custom node.
Click NewCustom Node, and creating two inputs and an output for the custom
node.
Come back to Home WorkSpace, we need to re-arrange the Dynamo diagram in
the followings:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
14
The custom node environment is different from the Dynamo graph
environment, but the interaction is fundamentally the same. With that said, let's create
our first custom node.
Here is an example that we have seen before:
Now we get started to create a custom node and it seems like a sub-program.
The important thing is that we have to indicate the exact input and output for this
custom node.
Click NewCustom Node, and creating two inputs and an output for the custom
node.
Come back to Home WorkSpace, we need to re-arrange the Dynamo diagram in
the followings:
15
As we can see above, the final result is the same with the previous one.
2.7. Functions
Functions can be created in a code block and recalled elsewhere in a Dynamo
definition. This creates another layer of control in a parametric file, and can be viewed
as a text-based version of a custom node. In this case, the "parent" code block is
readily accessible and can be located anywhere on the graph.
Call the function with another Code Block in the same file by giving the name
and the same number of arguments. It works just like the out-of-the-box nodes in your
library.
2.8. Working with Excel
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
15
As we can see above, the final result is the same with the previous one.
2.7. Functions
Functions can be created in a code block and recalled elsewhere in a Dynamo
definition. This creates another layer of control in a parametric file, and can be viewed
as a text-based version of a custom node. In this case, the "parent" code block is
readily accessible and can be located anywhere on the graph.
Call the function with another Code Block in the same file by giving the name
and the same number of arguments. It works just like the out-of-the-box nodes in your
library.
2.8. Working with Excel
16
2.8.1. Reading data
Now the column data in an excel file is imported and assign to a column in the
Revit schedule. Let’s refer to the Dynamo code as belows:
We can add this code to filter all blank row that is not having any number value
and mask them.
Some of nodes have been used as:
 Categories: choose a category in Revit system.
 All Elements of Category: show a list of all elements
 Element.GetParameterValueByName: show a list of properties of all
elements.
 List.Transpose: in order to make a list following a right input format.
 File Path: specify a path for an existing excel file.
 Excel.ReadFromFile: read the entire columns from a sheet.
Here is the result, the data from an excel file:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
16
2.8.1. Reading data
Now the column data in an excel file is imported and assign to a column in the
Revit schedule. Let’s refer to the Dynamo code as belows:
We can add this code to filter all blank row that is not having any number value
and mask them.
Some of nodes have been used as:
 Categories: choose a category in Revit system.
 All Elements of Category: show a list of all elements
 Element.GetParameterValueByName: show a list of properties of all
elements.
 List.Transpose: in order to make a list following a right input format.
 File Path: specify a path for an existing excel file.
 Excel.ReadFromFile: read the entire columns from a sheet.
Here is the result, the data from an excel file:
17
and the data in a Revit schedule after running this program:
2.8.2. Writing data
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
17
and the data in a Revit schedule after running this program:
2.8.2. Writing data
18
After placing rooms for all levels of this project, we need to add some of these
information such as Name, Number, Department…In properties palette, there are a lot
of things about room that it can be extract to schedules like Area, Perimeter…
Here is a Dynamo diagram shows how to write data into a Excel spreadsheet.
The excel file is created before running program.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
18
After placing rooms for all levels of this project, we need to add some of these
information such as Name, Number, Department…In properties palette, there are a lot
of things about room that it can be extract to schedules like Area, Perimeter…
Here is a Dynamo diagram shows how to write data into a Excel spreadsheet.
The excel file is created before running program.
19
Using the node Excel.WriteToFile: write all previous properties into a sheet.
Here is the final result:
3. Designing Geometry
3.1. Overview
When a programming language or environment has a geometry kernel at its
core, we can unlock the possibilities for designing precise and robust models,
automating design routines, and generating design iterations with algorithms.
Understanding geometry in the context of algorithms, computing, and
complexity, may sound daunting; however, there are a few key, and relatively simple,
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
19
Using the node Excel.WriteToFile: write all previous properties into a sheet.
Here is the final result:
3. Designing Geometry
3.1. Overview
When a programming language or environment has a geometry kernel at its
core, we can unlock the possibilities for designing precise and robust models,
automating design routines, and generating design iterations with algorithms.
Understanding geometry in the context of algorithms, computing, and
complexity, may sound daunting; however, there are a few key, and relatively simple,
20
principles that we can establish as fundamentals to start building towards more
advanced applications.
Understanding the Geometry types and how they are related will allow us to
navigate the collection of Geometry Nodes available to us in the Library. The
Geometry Nodes are organized alphabetically as opposed to hierarchically - here they
are displayed similar to their layout in the Dynamo interface.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
20
principles that we can establish as fundamentals to start building towards more
advanced applications.
Understanding the Geometry types and how they are related will allow us to
navigate the collection of Geometry Nodes available to us in the Library. The
Geometry Nodes are organized alphabetically as opposed to hierarchically - here they
are displayed similar to their layout in the Dynamo interface.
21
Additionally, making models in Dynamo and connecting the preview of what
we see in the Background Preview to the flow of data in our graph should become
more intuitive over time.
3.2. Points
A Point is defined by nothing more than one or more values called coordinates.
How many coordinate values we need to define the Point depends upon the Coordinate
System or context in which it resides. The most common kind of Point in Dynamo
exists in our three-dimensional World Coordinate System and has three coordinates
[X,Y,Z].
A Circle using the functions x=r*cos(t) and y=r*sin(t)
3.3. Vectors
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
21
Additionally, making models in Dynamo and connecting the preview of what
we see in the Background Preview to the flow of data in our graph should become
more intuitive over time.
3.2. Points
A Point is defined by nothing more than one or more values called coordinates.
How many coordinate values we need to define the Point depends upon the Coordinate
System or context in which it resides. The most common kind of Point in Dynamo
exists in our three-dimensional World Coordinate System and has three coordinates
[X,Y,Z].
A Circle using the functions x=r*cos(t) and y=r*sin(t)
3.3. Vectors
22
A vector is a geometric quantity describing Direction and Magnitude. Vectors
are abstract; ie. they represent a quantity, not a geometrical element. Vectors can be
easily confused with Points because they both are composed of a list of values.
Using Plane.ByOriginNormal Node for creating a new plane that perpendicular
to the previous vector.
3.4. Curves
The term Curve is generally a catch-all for all different sort of curved (even if
straight) shapes. Capital "C" Curve is the parent categorization for all of those shape
types - Lines, Circles, Splines, etc.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
22
A vector is a geometric quantity describing Direction and Magnitude. Vectors
are abstract; ie. they represent a quantity, not a geometrical element. Vectors can be
easily confused with Points because they both are composed of a list of values.
Using Plane.ByOriginNormal Node for creating a new plane that perpendicular
to the previous vector.
3.4. Curves
The term Curve is generally a catch-all for all different sort of curved (even if
straight) shapes. Capital "C" Curve is the parent categorization for all of those shape
types - Lines, Circles, Splines, etc.
23
Let's make a sine curve in Dynamo using two different methods to create
NURBS Curves to compare the results.
3.5. Surfaces
A Surface is a mathematical shape defined by a function and two parameters,
Instead of t for Curves, we use u and v to describe the corresponding parameter space.
This means we have more geometrical data to draw from when working with this type
of Geometry. For example, Curves have tangent vectors and normal planes (which can
rotate or twist along the curve's length), whereas Surfaces have normal vectors and
tangent planes that will be consistent in their orientation.
This is an example shows how to create a surface by Surface.ByPatch node and
we can combine some other nodes to subtract surface in Dynamo. Beside that we use
Surface.Thicken to make a simple solid with a specified thickness.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
23
Let's make a sine curve in Dynamo using two different methods to create
NURBS Curves to compare the results.
3.5. Surfaces
A Surface is a mathematical shape defined by a function and two parameters,
Instead of t for Curves, we use u and v to describe the corresponding parameter space.
This means we have more geometrical data to draw from when working with this type
of Geometry. For example, Curves have tangent vectors and normal planes (which can
rotate or twist along the curve's length), whereas Surfaces have normal vectors and
tangent planes that will be consistent in their orientation.
This is an example shows how to create a surface by Surface.ByPatch node and
we can combine some other nodes to subtract surface in Dynamo. Beside that we use
Surface.Thicken to make a simple solid with a specified thickness.
24
Some of nodes have been used as:
 Surface.ByPatch: create a surface by filling in the interior of a closed
boundary defined by input curves.
 Geometry.Trim: removes elements of the entity closest to the pick point.
 Geometry.IntersectAll: get the intersection of geometry for this object
and a collection of other geometries.
 Surface.Thicken: thicken surface into a solid.
3.6. Solids
Solids consist of one or more Surfaces that contain volume by way of a closed
boundary that defines "in" or "out." Regardless of how many of these Surfaces there
are, they must form a "watertight" volume to be considered a Solid. Solids can be
created by joining Surfaces or Polysurfaces together or by using operations such as
loft, sweep, and revolve. Sphere, Cube, Cone and Cylinder primitives are also Solids.
Now we want to show you two ways to make a solid in Dynamo:
 Create a solid by lofting between input cross section closed curves.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
24
Some of nodes have been used as:
 Surface.ByPatch: create a surface by filling in the interior of a closed
boundary defined by input curves.
 Geometry.Trim: removes elements of the entity closest to the pick point.
 Geometry.IntersectAll: get the intersection of geometry for this object
and a collection of other geometries.
 Surface.Thicken: thicken surface into a solid.
3.6. Solids
Solids consist of one or more Surfaces that contain volume by way of a closed
boundary that defines "in" or "out." Regardless of how many of these Surfaces there
are, they must form a "watertight" volume to be considered a Solid. Solids can be
created by joining Surfaces or Polysurfaces together or by using operations such as
loft, sweep, and revolve. Sphere, Cube, Cone and Cylinder primitives are also Solids.
Now we want to show you two ways to make a solid in Dynamo:
 Create a solid by lofting between input cross section closed curves.
25
 Extrudes a curve in the normal direction by the specified distance.
3.7. Importing Geometry
The following examples show a series of components used to browse for a file,
import the file contents, and convert it into usable Dynamo geometry. Dynamo also
gives us the ability to filter and select specific objects to import from a DWG file -
which we'll demonstrate below.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
25
 Extrudes a curve in the normal direction by the specified distance.
3.7. Importing Geometry
The following examples show a series of components used to browse for a file,
import the file contents, and convert it into usable Dynamo geometry. Dynamo also
gives us the ability to filter and select specific objects to import from a DWG file -
which we'll demonstrate below.
26
 Step 1: Use the File Path component to browse for the DWG file to be
imported into Dynamo.
 Step 2: Connect to FileLoader.FromPath to read the file.
 Step 3: Use the FileLoader.GetImportedObjects component to parse the
geometry into Dynamo Studio.
 Step 4: ImportedObject.ConvertToGeometries will convert the objects
into usable geometry in the Dyanamo workspace.
As shown in the above image, all types of geometry in the DWG file - surfaces,
meshes, curves and lines - are imported into Dynamo.
4. Interacting with Revit
4.1. Selection
Revit is a data-rich environment. This gives us a range of selection abilities
which expands far beyond "point-and-click". We can query the Revit database and
dynamically link Revit elements to Dynamo geometry while performing parametric
operations.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
26
 Step 1: Use the File Path component to browse for the DWG file to be
imported into Dynamo.
 Step 2: Connect to FileLoader.FromPath to read the file.
 Step 3: Use the FileLoader.GetImportedObjects component to parse the
geometry into Dynamo Studio.
 Step 4: ImportedObject.ConvertToGeometries will convert the objects
into usable geometry in the Dyanamo workspace.
As shown in the above image, all types of geometry in the DWG file - surfaces,
meshes, curves and lines - are imported into Dynamo.
4. Interacting with Revit
4.1. Selection
Revit is a data-rich environment. This gives us a range of selection abilities
which expands far beyond "point-and-click". We can query the Revit database and
dynamically link Revit elements to Dynamo geometry while performing parametric
operations.
27
To select Revit elements properly, it's important to have a full-understanding of
the Revit element hierarchy. Want to select all the walls in a project? Select by
category. Want to select every Eames chair in your mid-century modern lobby? Select
by family. Before jumping into an exercise, let's do a quick review of the Revit
hierarchy.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
27
To select Revit elements properly, it's important to have a full-understanding of
the Revit element hierarchy. Want to select all the walls in a project? Select by
category. Want to select every Eames chair in your mid-century modern lobby? Select
by family. Before jumping into an exercise, let's do a quick review of the Revit
hierarchy.
28
The three images below breakdown the main categories for Revit element
selection in Dynamo. These are great tools to use in combination, and we'll explore
some of these in the following exercises.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
28
The three images below breakdown the main categories for Revit element
selection in Dynamo. These are great tools to use in combination, and we'll explore
some of these in the following exercises.
29
We introduce an example as belows to clarify Selecting procedure, the
properties of Revit elements will be utilized in Dynamo environment after that.
4.2. Edition
This exercise focuses on editing Revit elements without performing geometric
operation in Dynamo. We're not importing Dynamo geometry here, just editing
parameters in a Revit project. This exercise is basic, and to the more advanced Revit
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
29
We introduce an example as belows to clarify Selecting procedure, the
properties of Revit elements will be utilized in Dynamo environment after that.
4.2. Edition
This exercise focuses on editing Revit elements without performing geometric
operation in Dynamo. We're not importing Dynamo geometry here, just editing
parameters in a Revit project. This exercise is basic, and to the more advanced Revit
30
users, notice that these are instance parameters of a Revit element, but the same logic
can be applied to an array of elements to customize on a large scale. This is all done
with the "Element.SetParameterByName" node.
4.3. Creation
You can create an array of Revit elements in Dynamo with full parametric
control. The Revit nodes in Dynamo offer the ability to import elements from generic
geometries to specific category types (like walls and floors). In this section, we'll focus
on importing parametrically flexible elements with adaptive components.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
30
users, notice that these are instance parameters of a Revit element, but the same logic
can be applied to an array of elements to customize on a large scale. This is all done
with the "Element.SetParameterByName" node.
4.3. Creation
You can create an array of Revit elements in Dynamo with full parametric
control. The Revit nodes in Dynamo offer the ability to import elements from generic
geometries to specific category types (like walls and floors). In this section, we'll focus
on importing parametrically flexible elements with adaptive components.
31
You can use geometry in Dynamo to create Revit geometry. Let’s begin with
some Revit elements that are created by Dynamo diagrams:
 Creating a floor:
 Creating a straight beam:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
31
You can use geometry in Dynamo to create Revit geometry. Let’s begin with
some Revit elements that are created by Dynamo diagrams:
 Creating a floor:
 Creating a straight beam:
32
 Creating a basic wall:
4.4. Adaptive Component Placement
Using Metric Mass to create 3 model lines with the divided path.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
32
 Creating a basic wall:
4.4. Adaptive Component Placement
Using Metric Mass to create 3 model lines with the divided path.
33
Now we must create an adaptive object with 3 points and along with 3 paths
above.
Using this Dynamo code we can place exactly triangle panel into the position.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
33
Now we must create an adaptive object with 3 points and along with 3 paths
above.
Using this Dynamo code we can place exactly triangle panel into the position.
34
Or we can use DividedPath.Points node instead of Element.Geometry node to
get the same result.
4.5. Unfolding Elements
4.5.1. Unfolding a Cuboid
Some of nodes have been used as:
 Cuboid.ByLengths: create a cuboid centered at WCS origin, with width,
length, and height.
 Topology.Faces: the faces of the Topology.
 Unfolding.UnfoldListOfFaces: method for taking a list of planar faces
and unfolding them, also returns an unfolding object that stores the
starting and final locations of unfolded faces, this is used for generating
labels.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
34
Or we can use DividedPath.Points node instead of Element.Geometry node to
get the same result.
4.5. Unfolding Elements
4.5.1. Unfolding a Cuboid
Some of nodes have been used as:
 Cuboid.ByLengths: create a cuboid centered at WCS origin, with width,
length, and height.
 Topology.Faces: the faces of the Topology.
 Unfolding.UnfoldListOfFaces: method for taking a list of planar faces
and unfolding them, also returns an unfolding object that stores the
starting and final locations of unfolded faces, this is used for generating
labels.
35
4.5.2. Unfolding a Sphere
In the beginning we need to build a Dynamo diagram to create a sphere with
surrounding surfaces. Some nodes will be used to create this object but we do not
show its form now. A set of points along with the form will appear depend on
specified U and V parameters. The U parameter parallel to vertical axis and the V
parameter parallel to horizontal axis.
Some of nodes have been used as:
 Sphere.ByCenterPointRadius
 PolySurface.BySolid
 PolySurface.Surfaces
 Surface.PointAtParameter
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
35
4.5.2. Unfolding a Sphere
In the beginning we need to build a Dynamo diagram to create a sphere with
surrounding surfaces. Some nodes will be used to create this object but we do not
show its form now. A set of points along with the form will appear depend on
specified U and V parameters. The U parameter parallel to vertical axis and the V
parameter parallel to horizontal axis.
Some of nodes have been used as:
 Sphere.ByCenterPointRadius
 PolySurface.BySolid
 PolySurface.Surfaces
 Surface.PointAtParameter
36
Some PolyCurve need to be created after that.
All surfaces will be showed by using some nodes as belows:
Using some nodes for unfolding and numbering each separated surfaces of the sphere
element.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
36
Some PolyCurve need to be created after that.
All surfaces will be showed by using some nodes as belows:
Using some nodes for unfolding and numbering each separated surfaces of the sphere
element.
37
4.6. Dynamo for Rebar
Before handling with nodes we have to install “Dynamo for Rebar” and
“BIM4Struc” Package.
Now let’s get started to create rebar on a Curved model in Revit.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
37
4.6. Dynamo for Rebar
Before handling with nodes we have to install “Dynamo for Rebar” and
“BIM4Struc” Package.
Now let’s get started to create rebar on a Curved model in Revit.
38
Some of nodes have been used as:
 Rebar.FollowingSurface
 RebarContainer.ByCurve
 Rebar Style
 Rebar Bar Type
 Rebar Hook Orientation
 Rebar Hook Type
4.7. Pile Placement
We need to use some nodes for reading an exsisting data from an excel file.
Let’s take a look:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
38
Some of nodes have been used as:
 Rebar.FollowingSurface
 RebarContainer.ByCurve
 Rebar Style
 Rebar Bar Type
 Rebar Hook Orientation
 Rebar Hook Type
4.7. Pile Placement
We need to use some nodes for reading an exsisting data from an excel file.
Let’s take a look:
39
After that, we use the FamilyInstance.ByCoordinates node to place piles in
Revit modelspace.
And here is the final result:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
39
After that, we use the FamilyInstance.ByCoordinates node to place piles in
Revit modelspace.
And here is the final result:
40
4.8. Working with Mass
4.8.1. Creating the Surface
In Revit workspace, we create two floors as belows:
Use Select Edge node:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
40
4.8. Working with Mass
4.8.1. Creating the Surface
In Revit workspace, we create two floors as belows:
Use Select Edge node:
41
Make the lists in order to create lots of curves and paralell to original curves.
 Curve.EndPoint: get the end point along the curve.
 PolyCurve.ByJoinedCurves: make polycurve by joining curve. Flips
curve as needed for connectivity.
 Curve.Length: the total arc length of the curve.
 Geometry.Translate: translate any given geometry by the given
displacements in the x,y,z directions.
Use Curve.Offset node to create a set of new curves with a specified amount.
Note that, in this case we use Math.Sin() function for making a different offset.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
41
Make the lists in order to create lots of curves and paralell to original curves.
 Curve.EndPoint: get the end point along the curve.
 PolyCurve.ByJoinedCurves: make polycurve by joining curve. Flips
curve as needed for connectivity.
 Curve.Length: the total arc length of the curve.
 Geometry.Translate: translate any given geometry by the given
displacements in the x,y,z directions.
Use Curve.Offset node to create a set of new curves with a specified amount.
Note that, in this case we use Math.Sin() function for making a different offset.
42
Creating points in each curve depend on the parameter values.
The points after Lacing as Cross Product:
Use NurbCurve.ByPoint and Surface.ByLoft nodes to create the surface for a
Mass element.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
42
Creating points in each curve depend on the parameter values.
The points after Lacing as Cross Product:
Use NurbCurve.ByPoint and Surface.ByLoft nodes to create the surface for a
Mass element.
43
Use ImportInstance.ByGeometry node to create a form in Revit depend on
solid, curve, surface…
User can control the shape of a Mass by change some value above:
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
43
Use ImportInstance.ByGeometry node to create a form in Revit depend on
solid, curve, surface…
User can control the shape of a Mass by change some value above:
44
4.8.2. Creating Revit Elements
To create the floor element, we use some nodes:
 Curve.ApproximateWithArcAndLineSegments: approximate a curve
with a collection of Arcs and Lines.
 Floor.ByOutlineTypeAndLevel: create a Revit Floor given it’s curve
outline and level.
To create the level, we use the node named Level.ByElevation.
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
44
4.8.2. Creating Revit Elements
To create the floor element, we use some nodes:
 Curve.ApproximateWithArcAndLineSegments: approximate a curve
with a collection of Arcs and Lines.
 Floor.ByOutlineTypeAndLevel: create a Revit Floor given it’s curve
outline and level.
To create the level, we use the node named Level.ByElevation.
45
5. References
www.dynamoprimer.com
www.dynamobim.org
forum.dynamobim.com
http://www.autodesk.com/products/dynamo-studio
con
con
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
ghebim.vn
congnghebim.vn
congnghebim.vn
con
con
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
hebim.vn
congnghebim.vn
congnghebim.vn
c
45
5. References
www.dynamoprimer.com
www.dynamobim.org
forum.dynamobim.com
http://www.autodesk.com/products/dynamo-studio

More Related Content

More from congnghebim

Chương IV: Tìm hiểu về Layer, Hatch, Text
Chương IV: Tìm hiểu về Layer, Hatch, TextChương IV: Tìm hiểu về Layer, Hatch, Text
Chương IV: Tìm hiểu về Layer, Hatch, Textcongnghebim
 
Tài liệu tự học Family trong Revit (phần 4)
Tài liệu tự học Family trong Revit (phần 4)Tài liệu tự học Family trong Revit (phần 4)
Tài liệu tự học Family trong Revit (phần 4)congnghebim
 
Tài liệu tự học Family trong Revit (phần 3)
Tài liệu tự học Family trong Revit (phần 3)Tài liệu tự học Family trong Revit (phần 3)
Tài liệu tự học Family trong Revit (phần 3)congnghebim
 
Tài liệu tự học Family trong Revit (phần 2)
Tài liệu tự học Family trong Revit (phần 2)Tài liệu tự học Family trong Revit (phần 2)
Tài liệu tự học Family trong Revit (phần 2)congnghebim
 
Tài liệu tự học Family trong Revit (phần 1)
Tài liệu tự học Family trong Revit (phần 1)Tài liệu tự học Family trong Revit (phần 1)
Tài liệu tự học Family trong Revit (phần 1)congnghebim
 
Trình bày công trình
Trình bày công trìnhTrình bày công trình
Trình bày công trìnhcongnghebim
 
Số liệu của công trình
Số liệu của công trìnhSố liệu của công trình
Số liệu của công trìnhcongnghebim
 
Chi tiết hóa và thiết kế chi tiết
Chi tiết hóa và thiết kế chi tiếtChi tiết hóa và thiết kế chi tiết
Chi tiết hóa và thiết kế chi tiếtcongnghebim
 
Triển khai công trình
Triển khai công trìnhTriển khai công trình
Triển khai công trìnhcongnghebim
 
Sử dụng kích thước và khóa kết
Sử dụng kích thước và khóa kếtSử dụng kích thước và khóa kết
Sử dụng kích thước và khóa kếtcongnghebim
 
Hình chiếu của công trình
Hình chiếu của công trìnhHình chiếu của công trình
Hình chiếu của công trìnhcongnghebim
 
Bố trí thêm những thành phần xây dựng được tải về
Bố trí thêm những thành phần xây dựng được tải vềBố trí thêm những thành phần xây dựng được tải về
Bố trí thêm những thành phần xây dựng được tải vềcongnghebim
 
Những thành phần cơ bản của một công trình
Những thành phần cơ bản của một công trìnhNhững thành phần cơ bản của một công trình
Những thành phần cơ bản của một công trìnhcongnghebim
 
Bắt đầu một thiết kế
Bắt đầu một thiết kếBắt đầu một thiết kế
Bắt đầu một thiết kếcongnghebim
 
Những điều cơ bản về Revit Architecture
Những điều cơ bản về Revit ArchitectureNhững điều cơ bản về Revit Architecture
Những điều cơ bản về Revit Architecturecongnghebim
 
Mô hình công trình được gán thông tin
Mô hình công trình được gán thông tinMô hình công trình được gán thông tin
Mô hình công trình được gán thông tincongnghebim
 
Tài liệu tự học sap2000 phần 2
Tài liệu tự học sap2000 phần 2Tài liệu tự học sap2000 phần 2
Tài liệu tự học sap2000 phần 2congnghebim
 
Tài liệu tự học sap2000 phần 1
Tài liệu tự học sap2000 phần 1Tài liệu tự học sap2000 phần 1
Tài liệu tự học sap2000 phần 1congnghebim
 
Tài liệu tự học Tekla Structure
Tài liệu tự học Tekla StructureTài liệu tự học Tekla Structure
Tài liệu tự học Tekla Structurecongnghebim
 
Ứng dụng phần mềm Vico và Prolog trong quản lý dự án
Ứng dụng phần mềm Vico và Prolog trong quản lý dự ánỨng dụng phần mềm Vico và Prolog trong quản lý dự án
Ứng dụng phần mềm Vico và Prolog trong quản lý dự áncongnghebim
 

More from congnghebim (20)

Chương IV: Tìm hiểu về Layer, Hatch, Text
Chương IV: Tìm hiểu về Layer, Hatch, TextChương IV: Tìm hiểu về Layer, Hatch, Text
Chương IV: Tìm hiểu về Layer, Hatch, Text
 
Tài liệu tự học Family trong Revit (phần 4)
Tài liệu tự học Family trong Revit (phần 4)Tài liệu tự học Family trong Revit (phần 4)
Tài liệu tự học Family trong Revit (phần 4)
 
Tài liệu tự học Family trong Revit (phần 3)
Tài liệu tự học Family trong Revit (phần 3)Tài liệu tự học Family trong Revit (phần 3)
Tài liệu tự học Family trong Revit (phần 3)
 
Tài liệu tự học Family trong Revit (phần 2)
Tài liệu tự học Family trong Revit (phần 2)Tài liệu tự học Family trong Revit (phần 2)
Tài liệu tự học Family trong Revit (phần 2)
 
Tài liệu tự học Family trong Revit (phần 1)
Tài liệu tự học Family trong Revit (phần 1)Tài liệu tự học Family trong Revit (phần 1)
Tài liệu tự học Family trong Revit (phần 1)
 
Trình bày công trình
Trình bày công trìnhTrình bày công trình
Trình bày công trình
 
Số liệu của công trình
Số liệu của công trìnhSố liệu của công trình
Số liệu của công trình
 
Chi tiết hóa và thiết kế chi tiết
Chi tiết hóa và thiết kế chi tiếtChi tiết hóa và thiết kế chi tiết
Chi tiết hóa và thiết kế chi tiết
 
Triển khai công trình
Triển khai công trìnhTriển khai công trình
Triển khai công trình
 
Sử dụng kích thước và khóa kết
Sử dụng kích thước và khóa kếtSử dụng kích thước và khóa kết
Sử dụng kích thước và khóa kết
 
Hình chiếu của công trình
Hình chiếu của công trìnhHình chiếu của công trình
Hình chiếu của công trình
 
Bố trí thêm những thành phần xây dựng được tải về
Bố trí thêm những thành phần xây dựng được tải vềBố trí thêm những thành phần xây dựng được tải về
Bố trí thêm những thành phần xây dựng được tải về
 
Những thành phần cơ bản của một công trình
Những thành phần cơ bản của một công trìnhNhững thành phần cơ bản của một công trình
Những thành phần cơ bản của một công trình
 
Bắt đầu một thiết kế
Bắt đầu một thiết kếBắt đầu một thiết kế
Bắt đầu một thiết kế
 
Những điều cơ bản về Revit Architecture
Những điều cơ bản về Revit ArchitectureNhững điều cơ bản về Revit Architecture
Những điều cơ bản về Revit Architecture
 
Mô hình công trình được gán thông tin
Mô hình công trình được gán thông tinMô hình công trình được gán thông tin
Mô hình công trình được gán thông tin
 
Tài liệu tự học sap2000 phần 2
Tài liệu tự học sap2000 phần 2Tài liệu tự học sap2000 phần 2
Tài liệu tự học sap2000 phần 2
 
Tài liệu tự học sap2000 phần 1
Tài liệu tự học sap2000 phần 1Tài liệu tự học sap2000 phần 1
Tài liệu tự học sap2000 phần 1
 
Tài liệu tự học Tekla Structure
Tài liệu tự học Tekla StructureTài liệu tự học Tekla Structure
Tài liệu tự học Tekla Structure
 
Ứng dụng phần mềm Vico và Prolog trong quản lý dự án
Ứng dụng phần mềm Vico và Prolog trong quản lý dự ánỨng dụng phần mềm Vico và Prolog trong quản lý dự án
Ứng dụng phần mềm Vico và Prolog trong quản lý dự án
 

Recently uploaded

Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfme23b1001
 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptSAURABHKUMAR892774
 
An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...Chandu841456
 
Introduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHIntroduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHC Sai Kiran
 
computer application and construction management
computer application and construction managementcomputer application and construction management
computer application and construction managementMariconPadriquez1
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEroselinkalist12
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substationstephanwindworld
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
8251 universal synchronous asynchronous receiver transmitter
8251 universal synchronous asynchronous receiver transmitter8251 universal synchronous asynchronous receiver transmitter
8251 universal synchronous asynchronous receiver transmitterShivangiSharma879191
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvLewisJB
 
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgUnit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgsaravananr517913
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx959SahilShah
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfROCENODodongVILLACER
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 

Recently uploaded (20)

Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdf
 
Arduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.pptArduino_CSE ece ppt for working and principal of arduino.ppt
Arduino_CSE ece ppt for working and principal of arduino.ppt
 
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
 
An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...An experimental study in using natural admixture as an alternative for chemic...
An experimental study in using natural admixture as an alternative for chemic...
 
Introduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHIntroduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECH
 
computer application and construction management
computer application and construction managementcomputer application and construction management
computer application and construction management
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substation
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
8251 universal synchronous asynchronous receiver transmitter
8251 universal synchronous asynchronous receiver transmitter8251 universal synchronous asynchronous receiver transmitter
8251 universal synchronous asynchronous receiver transmitter
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvv
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfgUnit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
Unit7-DC_Motors nkkjnsdkfnfcdfknfdgfggfg
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdf
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 

Tài liệu tự học Dynamo

  • 1. 1 Contents 1. Introduction ............................................................................................... 3 1.1. What is Dynamo...................................................................................3 1.2. The interface.........................................................................................3 1.3. Definitions............................................................................................4 1.3.1. Nodes ...................................................................................................4 1.3.2. Wires ....................................................................................................5 1.3.3. Ports .....................................................................................................5 1.4. An example...........................................................................................6 2. Working with Data .................................................................................... 6 2.1. Data types .............................................................................................6 2.2. Math functions......................................................................................6 2.3. Working with Text String.....................................................................7 2.4. Working with a List..............................................................................7 2.5. Code Block.........................................................................................10 2.6. Custom Node......................................................................................13 2.7. Functions ............................................................................................15 2.8. Working with Excel............................................................................15 2.8.1. Reading data.......................................................................................16 2.8.2. Writing data........................................................................................17 3. Designing Geometry................................................................................ 19 3.1. Overview ............................................................................................19 con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 1 Contents 1. Introduction ............................................................................................... 3 1.1. What is Dynamo...................................................................................3 1.2. The interface.........................................................................................3 1.3. Definitions............................................................................................4 1.3.1. Nodes ...................................................................................................4 1.3.2. Wires ....................................................................................................5 1.3.3. Ports .....................................................................................................5 1.4. An example...........................................................................................6 2. Working with Data .................................................................................... 6 2.1. Data types .............................................................................................6 2.2. Math functions......................................................................................6 2.3. Working with Text String.....................................................................7 2.4. Working with a List..............................................................................7 2.5. Code Block.........................................................................................10 2.6. Custom Node......................................................................................13 2.7. Functions ............................................................................................15 2.8. Working with Excel............................................................................15 2.8.1. Reading data.......................................................................................16 2.8.2. Writing data........................................................................................17 3. Designing Geometry................................................................................ 19 3.1. Overview ............................................................................................19
  • 2. 2 3.2. Points ..................................................................................................21 3.3. Vectors................................................................................................21 3.4. Curves.................................................................................................22 3.5. Surfaces ..............................................................................................23 3.6. Solids ..................................................................................................24 3.7. Importing Geometry...........................................................................25 4. Interacting with Revit .............................................................................. 26 4.1. Selection .............................................................................................26 4.2. Edition ................................................................................................29 4.3. Creation ..............................................................................................30 4.4. Adaptive Component Placement........................................................32 4.5. Unfolding Elements............................................................................34 4.5.1. Unfolding a Cuboid............................................................................34 4.5.2. Unfolding a Sphere ............................................................................35 4.6. Dynamo for Rebar..............................................................................37 4.7. Pile Placement ....................................................................................38 4.8. Working with Mass ............................................................................40 4.8.1. Creating the Surface...........................................................................40 4.8.2. Creating Revit Elements ....................................................................44 5. References ............................................................................................... 45 con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 2 3.2. Points ..................................................................................................21 3.3. Vectors................................................................................................21 3.4. Curves.................................................................................................22 3.5. Surfaces ..............................................................................................23 3.6. Solids ..................................................................................................24 3.7. Importing Geometry...........................................................................25 4. Interacting with Revit .............................................................................. 26 4.1. Selection .............................................................................................26 4.2. Edition ................................................................................................29 4.3. Creation ..............................................................................................30 4.4. Adaptive Component Placement........................................................32 4.5. Unfolding Elements............................................................................34 4.5.1. Unfolding a Cuboid............................................................................34 4.5.2. Unfolding a Sphere ............................................................................35 4.6. Dynamo for Rebar..............................................................................37 4.7. Pile Placement ....................................................................................38 4.8. Working with Mass ............................................................................40 4.8.1. Creating the Surface...........................................................................40 4.8.2. Creating Revit Elements ....................................................................44 5. References ............................................................................................... 45
  • 3. 3 DYNAMO REPORT 1. Introduction 1.1. What is Dynamo Dynamo is primarily a plug-in for Autodesk Revit and Vasari. Dynamo can also run as a stand-alone application with all the list and logic functionality, and with some experimental geometry tools available using the Autodesk Shape Manager kernel. Dynamo allows designers to design custom computational design and automation processes through a node-based Visual Programming interface. This means that a designer can leverage computational concepts, without the need to write code. In addition, Dynamo gives the designer the added advantage of being able to leverage computational design workflows within the context of a BIM environment. The designer is able to construct custom systems to control Vasari Families and Parameters. 1.2. The interface After finishing Revit installation and Dynamo plug-in, the Dynamo icon may appear on the ribbon named Visual Programming. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 3 DYNAMO REPORT 1. Introduction 1.1. What is Dynamo Dynamo is primarily a plug-in for Autodesk Revit and Vasari. Dynamo can also run as a stand-alone application with all the list and logic functionality, and with some experimental geometry tools available using the Autodesk Shape Manager kernel. Dynamo allows designers to design custom computational design and automation processes through a node-based Visual Programming interface. This means that a designer can leverage computational concepts, without the need to write code. In addition, Dynamo gives the designer the added advantage of being able to leverage computational design workflows within the context of a BIM environment. The designer is able to construct custom systems to control Vasari Families and Parameters. 1.2. The interface After finishing Revit installation and Dynamo plug-in, the Dynamo icon may appear on the ribbon named Visual Programming.
  • 4. 4  Part A: Pulldown Menus  Part B: Search Bar  Part C: Node Library  Part D: Workspace  Part E: Execution Bar 1.3. Definitions 1.3.1. Nodes Nodes have input Ports on the left side and output Ports on the right side. Directionality of execution and program flow usually goes left to right.  Nodes are the objects you place and connect together with Wires to form a visual program.  Nodes can represent Revit Elements like Model Lines or Reference Points.  Nodes can also represent operations like Math Functions.  Nodes have inputs and outputs.  The colors of Nodes change to indicate state. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 4  Part A: Pulldown Menus  Part B: Search Bar  Part C: Node Library  Part D: Workspace  Part E: Execution Bar 1.3. Definitions 1.3.1. Nodes Nodes have input Ports on the left side and output Ports on the right side. Directionality of execution and program flow usually goes left to right.  Nodes are the objects you place and connect together with Wires to form a visual program.  Nodes can represent Revit Elements like Model Lines or Reference Points.  Nodes can also represent operations like Math Functions.  Nodes have inputs and outputs.  The colors of Nodes change to indicate state.
  • 5. 5 1.3.2. Wires Wires connect between Nodes to create relationships and establish a program flow. You can think of them literally as electrical wires that carry pulses of information from one object to the next.  You create a Wire using the mouse left-clicking on an output Port and dragging with the mouse button held down, then connect to the input port of another node.  To disconnect a Wire, left-click on the output Node and pull the Wire away. 1.3.3. Ports Ports are the light rectangular areas on Nodes, they are the receptors for Wires. Information flows through the Ports from left to right.  Inputs Ports are on the left side of the Node.  Outputs Ports are on the right side of the Node. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 5 1.3.2. Wires Wires connect between Nodes to create relationships and establish a program flow. You can think of them literally as electrical wires that carry pulses of information from one object to the next.  You create a Wire using the mouse left-clicking on an output Port and dragging with the mouse button held down, then connect to the input port of another node.  To disconnect a Wire, left-click on the output Node and pull the Wire away. 1.3.3. Ports Ports are the light rectangular areas on Nodes, they are the receptors for Wires. Information flows through the Ports from left to right.  Inputs Ports are on the left side of the Node.  Outputs Ports are on the right side of the Node.
  • 6. 6 1.4. An example There is a beginning example about how it work in Dynamo environment. This program help us create a reference point by coordinates (x,y,z).  Input port: x,y,z values  Output port: a reference point Let’s see the connectivity between them: 2. Working with Data 2.1. Data types There are three types of data that can be used in Dynamo: number, string and boolean. User can choose one of them or more depend on what kind of input requirements in each program. 2.2. Math functions Dynamo is used to create algorthims that take input(s), extract and process the input's data to return an output or outcome. Here you can see we have a series of mathematical operators or functions like addition, subtraction, multiplication and division…Or having some functions like less than one another, equal to or not equal to… con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 6 1.4. An example There is a beginning example about how it work in Dynamo environment. This program help us create a reference point by coordinates (x,y,z).  Input port: x,y,z values  Output port: a reference point Let’s see the connectivity between them: 2. Working with Data 2.1. Data types There are three types of data that can be used in Dynamo: number, string and boolean. User can choose one of them or more depend on what kind of input requirements in each program. 2.2. Math functions Dynamo is used to create algorthims that take input(s), extract and process the input's data to return an output or outcome. Here you can see we have a series of mathematical operators or functions like addition, subtraction, multiplication and division…Or having some functions like less than one another, equal to or not equal to…
  • 7. 7 2.3. Working with Text String Here is the ChangeCase node, this node take two inputs: the string, which we already have in the workspace. With String.Length function, the result will show a number of characters in a input string. 2.4. Working with a List Another powerful aspect of using Dynamo is the ability to process more than one and piece of information at a time. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 7 2.3. Working with Text String Here is the ChangeCase node, this node take two inputs: the string, which we already have in the workspace. With String.Length function, the result will show a number of characters in a input string. 2.4. Working with a List Another powerful aspect of using Dynamo is the ability to process more than one and piece of information at a time.
  • 8. 8 For this example, let's go ahead and use three inputs and we'll also drag in maybe three Integer Sliders to plug into ListCreate node. Or maybe in some cases we can use Number Slider instead of Integer Slider. Another case will show how to use a list of data as inputs:  Calculate the sum of a list.  Calculate the square root of numbers in a list. An example of creating a list by using Range node: There are some simple nodes related to managing a list in Dynamo:  Index of a list: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 8 For this example, let's go ahead and use three inputs and we'll also drag in maybe three Integer Sliders to plug into ListCreate node. Or maybe in some cases we can use Number Slider instead of Integer Slider. Another case will show how to use a list of data as inputs:  Calculate the sum of a list.  Calculate the square root of numbers in a list. An example of creating a list by using Range node: There are some simple nodes related to managing a list in Dynamo:  Index of a list:
  • 9. 9  Give a total number in a list & combine two lists into one.  Drawing circles and polygons depend on a list: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 9  Give a total number in a list & combine two lists into one.  Drawing circles and polygons depend on a list:
  • 10. 10  List.Map Function: Let’s see the example as belows: Notice that the List.Count node has no input. It is being used as a function, so the List.Count node will be applied to every individual list one step down in the hierarchy. The blank input of List.Countcorresponds to the list input of List.Map. 2.5. Code Block Code blocks are a window deep into DesignScript, the programming language at the heart of Dynamo. Built from scratch to support exploratory design workflows, DesignScript is a readable and concise language that offers both immediate feedback to small bits of code and also scales to large and complex interactions. DesignScript also forms the backbone of the engine that drives most aspects of Dynamo “under the hood”. Because nearly all of the functionality found in Dynamo nodes and interactions con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 10  List.Map Function: Let’s see the example as belows: Notice that the List.Count node has no input. It is being used as a function, so the List.Count node will be applied to every individual list one step down in the hierarchy. The blank input of List.Countcorresponds to the list input of List.Map. 2.5. Code Block Code blocks are a window deep into DesignScript, the programming language at the heart of Dynamo. Built from scratch to support exploratory design workflows, DesignScript is a readable and concise language that offers both immediate feedback to small bits of code and also scales to large and complex interactions. DesignScript also forms the backbone of the engine that drives most aspects of Dynamo “under the hood”. Because nearly all of the functionality found in Dynamo nodes and interactions
  • 11. 11 have a one-to-one relationship with the scripting language, there are unique opportunities to move between node-based interactions and scripting in a fluid way. In short, code blocks are a text-scripting interface within a visual-scripting environment. They can be used as numbers, strings, formulas, and other data types. The code block is designed for Dynamo, so one can define arbitrary variables in the code block, and those variables are automatically added to the inputs of the node:  Query action: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 11 have a one-to-one relationship with the scripting language, there are unique opportunities to move between node-based interactions and scripting in a fluid way. In short, code blocks are a text-scripting interface within a visual-scripting environment. They can be used as numbers, strings, formulas, and other data types. The code block is designed for Dynamo, so one can define arbitrary variables in the code block, and those variables are automatically added to the inputs of the node:  Query action:
  • 12. 12 There are a few basic shorthand methods in the code block which, simply put, make data management a lot easier. We'll break down the basics below and discuss how this shorthand can be used both for creating and querying data. Data Type Standard Dynamo Code Block Equilvalent Numbers Strings Sequences Ranges Get Item at Index con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 12 There are a few basic shorthand methods in the code block which, simply put, make data management a lot easier. We'll break down the basics below and discuss how this shorthand can be used both for creating and querying data. Data Type Standard Dynamo Code Block Equilvalent Numbers Strings Sequences Ranges Get Item at Index
  • 13. 13 Create List Concatenate Strings Conditional Statements  Advanced Ranges: Creating advanced ranges allows us to work with list of lists in a simple fashion. In the examples below, we're isolating a variable from the primary range notation, and creating another range of that list. Creating nested ranges, compare the notation with a "#" vs. the notation without. The same logic applies as in basic ranges, except it gets a little more complex. By controlling the "end" value in a range, we create more ranges of differing lengths. 2.6. Custom Node con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 13 Create List Concatenate Strings Conditional Statements  Advanced Ranges: Creating advanced ranges allows us to work with list of lists in a simple fashion. In the examples below, we're isolating a variable from the primary range notation, and creating another range of that list. Creating nested ranges, compare the notation with a "#" vs. the notation without. The same logic applies as in basic ranges, except it gets a little more complex. By controlling the "end" value in a range, we create more ranges of differing lengths. 2.6. Custom Node
  • 14. 14 The custom node environment is different from the Dynamo graph environment, but the interaction is fundamentally the same. With that said, let's create our first custom node. Here is an example that we have seen before: Now we get started to create a custom node and it seems like a sub-program. The important thing is that we have to indicate the exact input and output for this custom node. Click NewCustom Node, and creating two inputs and an output for the custom node. Come back to Home WorkSpace, we need to re-arrange the Dynamo diagram in the followings: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 14 The custom node environment is different from the Dynamo graph environment, but the interaction is fundamentally the same. With that said, let's create our first custom node. Here is an example that we have seen before: Now we get started to create a custom node and it seems like a sub-program. The important thing is that we have to indicate the exact input and output for this custom node. Click NewCustom Node, and creating two inputs and an output for the custom node. Come back to Home WorkSpace, we need to re-arrange the Dynamo diagram in the followings:
  • 15. 15 As we can see above, the final result is the same with the previous one. 2.7. Functions Functions can be created in a code block and recalled elsewhere in a Dynamo definition. This creates another layer of control in a parametric file, and can be viewed as a text-based version of a custom node. In this case, the "parent" code block is readily accessible and can be located anywhere on the graph. Call the function with another Code Block in the same file by giving the name and the same number of arguments. It works just like the out-of-the-box nodes in your library. 2.8. Working with Excel con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 15 As we can see above, the final result is the same with the previous one. 2.7. Functions Functions can be created in a code block and recalled elsewhere in a Dynamo definition. This creates another layer of control in a parametric file, and can be viewed as a text-based version of a custom node. In this case, the "parent" code block is readily accessible and can be located anywhere on the graph. Call the function with another Code Block in the same file by giving the name and the same number of arguments. It works just like the out-of-the-box nodes in your library. 2.8. Working with Excel
  • 16. 16 2.8.1. Reading data Now the column data in an excel file is imported and assign to a column in the Revit schedule. Let’s refer to the Dynamo code as belows: We can add this code to filter all blank row that is not having any number value and mask them. Some of nodes have been used as:  Categories: choose a category in Revit system.  All Elements of Category: show a list of all elements  Element.GetParameterValueByName: show a list of properties of all elements.  List.Transpose: in order to make a list following a right input format.  File Path: specify a path for an existing excel file.  Excel.ReadFromFile: read the entire columns from a sheet. Here is the result, the data from an excel file: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 16 2.8.1. Reading data Now the column data in an excel file is imported and assign to a column in the Revit schedule. Let’s refer to the Dynamo code as belows: We can add this code to filter all blank row that is not having any number value and mask them. Some of nodes have been used as:  Categories: choose a category in Revit system.  All Elements of Category: show a list of all elements  Element.GetParameterValueByName: show a list of properties of all elements.  List.Transpose: in order to make a list following a right input format.  File Path: specify a path for an existing excel file.  Excel.ReadFromFile: read the entire columns from a sheet. Here is the result, the data from an excel file:
  • 17. 17 and the data in a Revit schedule after running this program: 2.8.2. Writing data con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 17 and the data in a Revit schedule after running this program: 2.8.2. Writing data
  • 18. 18 After placing rooms for all levels of this project, we need to add some of these information such as Name, Number, Department…In properties palette, there are a lot of things about room that it can be extract to schedules like Area, Perimeter… Here is a Dynamo diagram shows how to write data into a Excel spreadsheet. The excel file is created before running program. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 18 After placing rooms for all levels of this project, we need to add some of these information such as Name, Number, Department…In properties palette, there are a lot of things about room that it can be extract to schedules like Area, Perimeter… Here is a Dynamo diagram shows how to write data into a Excel spreadsheet. The excel file is created before running program.
  • 19. 19 Using the node Excel.WriteToFile: write all previous properties into a sheet. Here is the final result: 3. Designing Geometry 3.1. Overview When a programming language or environment has a geometry kernel at its core, we can unlock the possibilities for designing precise and robust models, automating design routines, and generating design iterations with algorithms. Understanding geometry in the context of algorithms, computing, and complexity, may sound daunting; however, there are a few key, and relatively simple, con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 19 Using the node Excel.WriteToFile: write all previous properties into a sheet. Here is the final result: 3. Designing Geometry 3.1. Overview When a programming language or environment has a geometry kernel at its core, we can unlock the possibilities for designing precise and robust models, automating design routines, and generating design iterations with algorithms. Understanding geometry in the context of algorithms, computing, and complexity, may sound daunting; however, there are a few key, and relatively simple,
  • 20. 20 principles that we can establish as fundamentals to start building towards more advanced applications. Understanding the Geometry types and how they are related will allow us to navigate the collection of Geometry Nodes available to us in the Library. The Geometry Nodes are organized alphabetically as opposed to hierarchically - here they are displayed similar to their layout in the Dynamo interface. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 20 principles that we can establish as fundamentals to start building towards more advanced applications. Understanding the Geometry types and how they are related will allow us to navigate the collection of Geometry Nodes available to us in the Library. The Geometry Nodes are organized alphabetically as opposed to hierarchically - here they are displayed similar to their layout in the Dynamo interface.
  • 21. 21 Additionally, making models in Dynamo and connecting the preview of what we see in the Background Preview to the flow of data in our graph should become more intuitive over time. 3.2. Points A Point is defined by nothing more than one or more values called coordinates. How many coordinate values we need to define the Point depends upon the Coordinate System or context in which it resides. The most common kind of Point in Dynamo exists in our three-dimensional World Coordinate System and has three coordinates [X,Y,Z]. A Circle using the functions x=r*cos(t) and y=r*sin(t) 3.3. Vectors con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 21 Additionally, making models in Dynamo and connecting the preview of what we see in the Background Preview to the flow of data in our graph should become more intuitive over time. 3.2. Points A Point is defined by nothing more than one or more values called coordinates. How many coordinate values we need to define the Point depends upon the Coordinate System or context in which it resides. The most common kind of Point in Dynamo exists in our three-dimensional World Coordinate System and has three coordinates [X,Y,Z]. A Circle using the functions x=r*cos(t) and y=r*sin(t) 3.3. Vectors
  • 22. 22 A vector is a geometric quantity describing Direction and Magnitude. Vectors are abstract; ie. they represent a quantity, not a geometrical element. Vectors can be easily confused with Points because they both are composed of a list of values. Using Plane.ByOriginNormal Node for creating a new plane that perpendicular to the previous vector. 3.4. Curves The term Curve is generally a catch-all for all different sort of curved (even if straight) shapes. Capital "C" Curve is the parent categorization for all of those shape types - Lines, Circles, Splines, etc. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 22 A vector is a geometric quantity describing Direction and Magnitude. Vectors are abstract; ie. they represent a quantity, not a geometrical element. Vectors can be easily confused with Points because they both are composed of a list of values. Using Plane.ByOriginNormal Node for creating a new plane that perpendicular to the previous vector. 3.4. Curves The term Curve is generally a catch-all for all different sort of curved (even if straight) shapes. Capital "C" Curve is the parent categorization for all of those shape types - Lines, Circles, Splines, etc.
  • 23. 23 Let's make a sine curve in Dynamo using two different methods to create NURBS Curves to compare the results. 3.5. Surfaces A Surface is a mathematical shape defined by a function and two parameters, Instead of t for Curves, we use u and v to describe the corresponding parameter space. This means we have more geometrical data to draw from when working with this type of Geometry. For example, Curves have tangent vectors and normal planes (which can rotate or twist along the curve's length), whereas Surfaces have normal vectors and tangent planes that will be consistent in their orientation. This is an example shows how to create a surface by Surface.ByPatch node and we can combine some other nodes to subtract surface in Dynamo. Beside that we use Surface.Thicken to make a simple solid with a specified thickness. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 23 Let's make a sine curve in Dynamo using two different methods to create NURBS Curves to compare the results. 3.5. Surfaces A Surface is a mathematical shape defined by a function and two parameters, Instead of t for Curves, we use u and v to describe the corresponding parameter space. This means we have more geometrical data to draw from when working with this type of Geometry. For example, Curves have tangent vectors and normal planes (which can rotate or twist along the curve's length), whereas Surfaces have normal vectors and tangent planes that will be consistent in their orientation. This is an example shows how to create a surface by Surface.ByPatch node and we can combine some other nodes to subtract surface in Dynamo. Beside that we use Surface.Thicken to make a simple solid with a specified thickness.
  • 24. 24 Some of nodes have been used as:  Surface.ByPatch: create a surface by filling in the interior of a closed boundary defined by input curves.  Geometry.Trim: removes elements of the entity closest to the pick point.  Geometry.IntersectAll: get the intersection of geometry for this object and a collection of other geometries.  Surface.Thicken: thicken surface into a solid. 3.6. Solids Solids consist of one or more Surfaces that contain volume by way of a closed boundary that defines "in" or "out." Regardless of how many of these Surfaces there are, they must form a "watertight" volume to be considered a Solid. Solids can be created by joining Surfaces or Polysurfaces together or by using operations such as loft, sweep, and revolve. Sphere, Cube, Cone and Cylinder primitives are also Solids. Now we want to show you two ways to make a solid in Dynamo:  Create a solid by lofting between input cross section closed curves. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 24 Some of nodes have been used as:  Surface.ByPatch: create a surface by filling in the interior of a closed boundary defined by input curves.  Geometry.Trim: removes elements of the entity closest to the pick point.  Geometry.IntersectAll: get the intersection of geometry for this object and a collection of other geometries.  Surface.Thicken: thicken surface into a solid. 3.6. Solids Solids consist of one or more Surfaces that contain volume by way of a closed boundary that defines "in" or "out." Regardless of how many of these Surfaces there are, they must form a "watertight" volume to be considered a Solid. Solids can be created by joining Surfaces or Polysurfaces together or by using operations such as loft, sweep, and revolve. Sphere, Cube, Cone and Cylinder primitives are also Solids. Now we want to show you two ways to make a solid in Dynamo:  Create a solid by lofting between input cross section closed curves.
  • 25. 25  Extrudes a curve in the normal direction by the specified distance. 3.7. Importing Geometry The following examples show a series of components used to browse for a file, import the file contents, and convert it into usable Dynamo geometry. Dynamo also gives us the ability to filter and select specific objects to import from a DWG file - which we'll demonstrate below. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 25  Extrudes a curve in the normal direction by the specified distance. 3.7. Importing Geometry The following examples show a series of components used to browse for a file, import the file contents, and convert it into usable Dynamo geometry. Dynamo also gives us the ability to filter and select specific objects to import from a DWG file - which we'll demonstrate below.
  • 26. 26  Step 1: Use the File Path component to browse for the DWG file to be imported into Dynamo.  Step 2: Connect to FileLoader.FromPath to read the file.  Step 3: Use the FileLoader.GetImportedObjects component to parse the geometry into Dynamo Studio.  Step 4: ImportedObject.ConvertToGeometries will convert the objects into usable geometry in the Dyanamo workspace. As shown in the above image, all types of geometry in the DWG file - surfaces, meshes, curves and lines - are imported into Dynamo. 4. Interacting with Revit 4.1. Selection Revit is a data-rich environment. This gives us a range of selection abilities which expands far beyond "point-and-click". We can query the Revit database and dynamically link Revit elements to Dynamo geometry while performing parametric operations. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 26  Step 1: Use the File Path component to browse for the DWG file to be imported into Dynamo.  Step 2: Connect to FileLoader.FromPath to read the file.  Step 3: Use the FileLoader.GetImportedObjects component to parse the geometry into Dynamo Studio.  Step 4: ImportedObject.ConvertToGeometries will convert the objects into usable geometry in the Dyanamo workspace. As shown in the above image, all types of geometry in the DWG file - surfaces, meshes, curves and lines - are imported into Dynamo. 4. Interacting with Revit 4.1. Selection Revit is a data-rich environment. This gives us a range of selection abilities which expands far beyond "point-and-click". We can query the Revit database and dynamically link Revit elements to Dynamo geometry while performing parametric operations.
  • 27. 27 To select Revit elements properly, it's important to have a full-understanding of the Revit element hierarchy. Want to select all the walls in a project? Select by category. Want to select every Eames chair in your mid-century modern lobby? Select by family. Before jumping into an exercise, let's do a quick review of the Revit hierarchy. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 27 To select Revit elements properly, it's important to have a full-understanding of the Revit element hierarchy. Want to select all the walls in a project? Select by category. Want to select every Eames chair in your mid-century modern lobby? Select by family. Before jumping into an exercise, let's do a quick review of the Revit hierarchy.
  • 28. 28 The three images below breakdown the main categories for Revit element selection in Dynamo. These are great tools to use in combination, and we'll explore some of these in the following exercises. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 28 The three images below breakdown the main categories for Revit element selection in Dynamo. These are great tools to use in combination, and we'll explore some of these in the following exercises.
  • 29. 29 We introduce an example as belows to clarify Selecting procedure, the properties of Revit elements will be utilized in Dynamo environment after that. 4.2. Edition This exercise focuses on editing Revit elements without performing geometric operation in Dynamo. We're not importing Dynamo geometry here, just editing parameters in a Revit project. This exercise is basic, and to the more advanced Revit con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 29 We introduce an example as belows to clarify Selecting procedure, the properties of Revit elements will be utilized in Dynamo environment after that. 4.2. Edition This exercise focuses on editing Revit elements without performing geometric operation in Dynamo. We're not importing Dynamo geometry here, just editing parameters in a Revit project. This exercise is basic, and to the more advanced Revit
  • 30. 30 users, notice that these are instance parameters of a Revit element, but the same logic can be applied to an array of elements to customize on a large scale. This is all done with the "Element.SetParameterByName" node. 4.3. Creation You can create an array of Revit elements in Dynamo with full parametric control. The Revit nodes in Dynamo offer the ability to import elements from generic geometries to specific category types (like walls and floors). In this section, we'll focus on importing parametrically flexible elements with adaptive components. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 30 users, notice that these are instance parameters of a Revit element, but the same logic can be applied to an array of elements to customize on a large scale. This is all done with the "Element.SetParameterByName" node. 4.3. Creation You can create an array of Revit elements in Dynamo with full parametric control. The Revit nodes in Dynamo offer the ability to import elements from generic geometries to specific category types (like walls and floors). In this section, we'll focus on importing parametrically flexible elements with adaptive components.
  • 31. 31 You can use geometry in Dynamo to create Revit geometry. Let’s begin with some Revit elements that are created by Dynamo diagrams:  Creating a floor:  Creating a straight beam: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 31 You can use geometry in Dynamo to create Revit geometry. Let’s begin with some Revit elements that are created by Dynamo diagrams:  Creating a floor:  Creating a straight beam:
  • 32. 32  Creating a basic wall: 4.4. Adaptive Component Placement Using Metric Mass to create 3 model lines with the divided path. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 32  Creating a basic wall: 4.4. Adaptive Component Placement Using Metric Mass to create 3 model lines with the divided path.
  • 33. 33 Now we must create an adaptive object with 3 points and along with 3 paths above. Using this Dynamo code we can place exactly triangle panel into the position. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 33 Now we must create an adaptive object with 3 points and along with 3 paths above. Using this Dynamo code we can place exactly triangle panel into the position.
  • 34. 34 Or we can use DividedPath.Points node instead of Element.Geometry node to get the same result. 4.5. Unfolding Elements 4.5.1. Unfolding a Cuboid Some of nodes have been used as:  Cuboid.ByLengths: create a cuboid centered at WCS origin, with width, length, and height.  Topology.Faces: the faces of the Topology.  Unfolding.UnfoldListOfFaces: method for taking a list of planar faces and unfolding them, also returns an unfolding object that stores the starting and final locations of unfolded faces, this is used for generating labels. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 34 Or we can use DividedPath.Points node instead of Element.Geometry node to get the same result. 4.5. Unfolding Elements 4.5.1. Unfolding a Cuboid Some of nodes have been used as:  Cuboid.ByLengths: create a cuboid centered at WCS origin, with width, length, and height.  Topology.Faces: the faces of the Topology.  Unfolding.UnfoldListOfFaces: method for taking a list of planar faces and unfolding them, also returns an unfolding object that stores the starting and final locations of unfolded faces, this is used for generating labels.
  • 35. 35 4.5.2. Unfolding a Sphere In the beginning we need to build a Dynamo diagram to create a sphere with surrounding surfaces. Some nodes will be used to create this object but we do not show its form now. A set of points along with the form will appear depend on specified U and V parameters. The U parameter parallel to vertical axis and the V parameter parallel to horizontal axis. Some of nodes have been used as:  Sphere.ByCenterPointRadius  PolySurface.BySolid  PolySurface.Surfaces  Surface.PointAtParameter con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 35 4.5.2. Unfolding a Sphere In the beginning we need to build a Dynamo diagram to create a sphere with surrounding surfaces. Some nodes will be used to create this object but we do not show its form now. A set of points along with the form will appear depend on specified U and V parameters. The U parameter parallel to vertical axis and the V parameter parallel to horizontal axis. Some of nodes have been used as:  Sphere.ByCenterPointRadius  PolySurface.BySolid  PolySurface.Surfaces  Surface.PointAtParameter
  • 36. 36 Some PolyCurve need to be created after that. All surfaces will be showed by using some nodes as belows: Using some nodes for unfolding and numbering each separated surfaces of the sphere element. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 36 Some PolyCurve need to be created after that. All surfaces will be showed by using some nodes as belows: Using some nodes for unfolding and numbering each separated surfaces of the sphere element.
  • 37. 37 4.6. Dynamo for Rebar Before handling with nodes we have to install “Dynamo for Rebar” and “BIM4Struc” Package. Now let’s get started to create rebar on a Curved model in Revit. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 37 4.6. Dynamo for Rebar Before handling with nodes we have to install “Dynamo for Rebar” and “BIM4Struc” Package. Now let’s get started to create rebar on a Curved model in Revit.
  • 38. 38 Some of nodes have been used as:  Rebar.FollowingSurface  RebarContainer.ByCurve  Rebar Style  Rebar Bar Type  Rebar Hook Orientation  Rebar Hook Type 4.7. Pile Placement We need to use some nodes for reading an exsisting data from an excel file. Let’s take a look: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 38 Some of nodes have been used as:  Rebar.FollowingSurface  RebarContainer.ByCurve  Rebar Style  Rebar Bar Type  Rebar Hook Orientation  Rebar Hook Type 4.7. Pile Placement We need to use some nodes for reading an exsisting data from an excel file. Let’s take a look:
  • 39. 39 After that, we use the FamilyInstance.ByCoordinates node to place piles in Revit modelspace. And here is the final result: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 39 After that, we use the FamilyInstance.ByCoordinates node to place piles in Revit modelspace. And here is the final result:
  • 40. 40 4.8. Working with Mass 4.8.1. Creating the Surface In Revit workspace, we create two floors as belows: Use Select Edge node: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 40 4.8. Working with Mass 4.8.1. Creating the Surface In Revit workspace, we create two floors as belows: Use Select Edge node:
  • 41. 41 Make the lists in order to create lots of curves and paralell to original curves.  Curve.EndPoint: get the end point along the curve.  PolyCurve.ByJoinedCurves: make polycurve by joining curve. Flips curve as needed for connectivity.  Curve.Length: the total arc length of the curve.  Geometry.Translate: translate any given geometry by the given displacements in the x,y,z directions. Use Curve.Offset node to create a set of new curves with a specified amount. Note that, in this case we use Math.Sin() function for making a different offset. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 41 Make the lists in order to create lots of curves and paralell to original curves.  Curve.EndPoint: get the end point along the curve.  PolyCurve.ByJoinedCurves: make polycurve by joining curve. Flips curve as needed for connectivity.  Curve.Length: the total arc length of the curve.  Geometry.Translate: translate any given geometry by the given displacements in the x,y,z directions. Use Curve.Offset node to create a set of new curves with a specified amount. Note that, in this case we use Math.Sin() function for making a different offset.
  • 42. 42 Creating points in each curve depend on the parameter values. The points after Lacing as Cross Product: Use NurbCurve.ByPoint and Surface.ByLoft nodes to create the surface for a Mass element. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 42 Creating points in each curve depend on the parameter values. The points after Lacing as Cross Product: Use NurbCurve.ByPoint and Surface.ByLoft nodes to create the surface for a Mass element.
  • 43. 43 Use ImportInstance.ByGeometry node to create a form in Revit depend on solid, curve, surface… User can control the shape of a Mass by change some value above: con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 43 Use ImportInstance.ByGeometry node to create a form in Revit depend on solid, curve, surface… User can control the shape of a Mass by change some value above:
  • 44. 44 4.8.2. Creating Revit Elements To create the floor element, we use some nodes:  Curve.ApproximateWithArcAndLineSegments: approximate a curve with a collection of Arcs and Lines.  Floor.ByOutlineTypeAndLevel: create a Revit Floor given it’s curve outline and level. To create the level, we use the node named Level.ByElevation. con con ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn ghebim.vn congnghebim.vn congnghebim.vn con con c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c hebim.vn congnghebim.vn congnghebim.vn c 44 4.8.2. Creating Revit Elements To create the floor element, we use some nodes:  Curve.ApproximateWithArcAndLineSegments: approximate a curve with a collection of Arcs and Lines.  Floor.ByOutlineTypeAndLevel: create a Revit Floor given it’s curve outline and level. To create the level, we use the node named Level.ByElevation.