Data
Types
Numbers
Icon | Name | Inputs | Outputs |
---|---|---|---|
![]() |
Number | Number Box | double |
Simply put, a number node allows one to add a number to the canvas by typing it in the number box. This can be an integer, decimal, negative number, etc. There are other options for adding numbers to the canvas, including sliders, which we'll demonstrate in the exercise at the end of this section.
Booleans
Icon | Name | Inputs | Outputs |
---|---|---|---|
![]() |
Boolean | True/False | boolean |
Numeric variables can store a whole range of different numbers. Boolean variables can only store two values referred to as Yes or No, True or False, 1 or 0. Obviously we never use booleans to perform calculations because of their limited range. We use booleans to evaluate conditions.
Strings
Icon | Name | Inputs | Outputs |
---|---|---|---|
![]() |
String | Text Box | string |
A string is programming lingo for text. We know that number can drive parameters, and we can do the same with text, which we demonstrate in section 4.4.
Geometry
Points
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
Point.ByCoordinates | x,y,z | Point |
![]() |
Point.ByCylindricalCoordinates | cs,angle,elevation,radius | Point |
![]() |
Point.BySphericalCoordinates | cs,phi,theta,radius | Point |
A point is a location in space. For this primer, our coordinate system is X,Y, and Z. A point has a value for X, a value for Y, and a value for Z.
Vectors
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
Vector.ByCoordinates | x,y,z | Vector |
![]() |
Vector.ByTwoPoints | start,end | Vector |
![]() |
Vector.XAxis | none | Vector |
![]() |
Vector.YAxis | none | Vector |
![]() |
Vector.ZAxis | none | Vector |
A vector is a geometric quantity describing Direction and Magnitude. Vectors are abstract; ie. they represent a quantity, not a geometrical element.
Planes
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
Vector.ByCoordinates | p1,p2,p3 | Plane |
![]() |
Vector.ByTwoPoints | origin,normal | Plane |
![]() |
Plane.XY | none | Plane |
![]() |
Plane.XZ | none | Plane |
![]() |
Plane.YZ | none | Plane |
Planes are “Flat” and extend infinitely in two directions, defining a local coordinate system.
Nurbs
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
NurbsSurface.ByControlPoints | ControlVertices,uDegree,vDegree | NurbsSurface |
![]() |
NurbsCurve.ByControlPoints | points | NurbsCurve |
NURBS (non-uniform rational B-splines) are mathematical representations that can accurately model any shape from a simple 2D line, circle, arc, or box to the most complex 3D free-form organic surface or solid. They are created with rational algorithms and are infinitely differentiable.
Meshes
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
Mesh.ByPointsFaceIndices | vertexPositions,indices | Mesh |
A mesh is a collection of vertices, edges and faces which define a polyhedral object. Meshes are often used for rendering and animation, and are generally 'lighter weight' than nurbs (meaning, they have smaller file sizes and render more quickly). The tradeoff is that meshes are limited in their resolution.
Meshes vs. Nurbs
Generally, we can say that Nurbs are to Meshes as Vectors are to Pixels. They are significantly different geometry types, and using the propery geometry type for surfaces is critical for parametric modeling and file management.
Surfaces
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
Surface.ByLoft | crossSections | Surface |
![]() |
Surface.ByPatch | closedCurve | Surface |
![]() |
Surface.ByPerimeterPoints | points | Surface |
![]() |
Surface.BySweep | profile,path | Surface |
![]() |
Surface.ByRevolve | profile,axisOrigin,axisDirection,startAngle,sweepAngle | Surface |
A surface is two-dimensional topological manifold. Rather than deciphering what that means, let's just saw a surface is geometry that does not have thickness. This is how a surface is different from a solid.
Solids
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
Solid.ByUnion | solids | Solid |
![]() |
Solid.ByJoinedSurfaces | facesOfSolid | Solid |
![]() |
Solid.ByLoft | crossSections | Solid |
![]() |
Solid.BySweep | profile,path | Solid |
![]() |
Solid.ByRevolve | profile,axisOrigin,axisDirection,startAngle,sweepAngle | Solid |
A solid is three-dimensional geometry. A solid has thickness and can exist in the real world, unlike surfaces, curves, vectors, and points (at least as far as we can see). In Dynamo, a solid can be defined as a collection of surfaces, called a polysurface.
"Null"
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
Object.IsNull | obj | bool |
The 'null' object represents the absense of data. This is abstract, but you will likely come across this while working with visual programming. Testing for nulls and removing nulls from data structure is a crucial part to creating robust parametric models.
4.1.2 Hierarchy
Item(s)
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
List.GetItemAtIndex | list,index | var[]...[] |
Simply put, an item represents one single value, whether by itself or as part of a list. This can be any data type.
List(s)
Icon | Name/Syntax | Inputs | Outputs |
---|---|---|---|
![]() |
List.Create | index0, index1... | list |