| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| Icon | Name/Syntax | Inputs | Outputs |
| -- | -- | -- | -- | -- | -- |
| | List.Create | index0, index1... | list |