Skip to content

The Main Canvas & Wiring

Once you have placed your necessary nodes onto the canvas, the real magic of Vellum’s visual scripting engine begins. The Main Canvas is where you define the flow of architectural data, manipulate variables, and construct logic gates.

Before wiring your logic together, it is important to understand how individual nodes behave and how to interact with them on the canvas.

  • Quick Add: Right-click anywhere on an empty space in the canvas to instantly open a search menu to find and drop new nodes.
  • Movement & Organization: Nodes can be freely dragged around the workspace. You can align multiple nodes to keep your graph tidy, or wrap them into organized logic groups.
  • Collapse & Expand: Many nodes can be collapsed to save space or expanded to reveal advanced parameters and options.
  • Interactive Inputs: Depending on the node type, you may interact with built-in controls directly on the node face, such as dropdown menus, text fields, or color pickers.

Selecting a node (or a group of nodes) reveals a contextual popup toolbar with several critical actions:

  • Watch Window: Toggle a live preview to inspect the data currently passing through that specific node.
  • Freeze (Deactivate): Temporarily disable a node. Data will stop flowing through it, allowing you to test specific parts of your graph without deleting connections.
  • Duplicate: Instantly clone the selected node(s) and their internal settings.
  • Delete: Remove the node from the canvas.

Vellum reads logic from left to right.

  • Outputs are located on the right side of a node.
  • Inputs are located on the left side of a node.

To pass data from one operation to the next, click on an Output handle, drag the connection wire, and drop it onto a matching Input handle.

  • One-to-Many Connections: A single Output handle can be wired into multiple different Inputs across various nodes, allowing you to broadcast a single piece of data to many downstream operations simultaneously.
  • Deleting Connections: To remove a wire, click on the edge to select it, then press the Delete or Backspace key on your keyboard.

Architectural logic can get complex quickly. Vellum provides standard canvas navigation, control icons, and selection tools to help you manage large-scale scripts.

  • Marquee Selection: Click and drag on any empty space on the canvas background to draw a selection window. Any node touched by the window will be selected.
  • Multi-Select: Hold Shift and click multiple nodes to add or remove them from your active selection.
  • Logic Groups: Select multiple nodes and click the Group icon to wrap them in a distinct bounding box. You can name the group header to keep your workspace documented and beautifully organized.

The main canvas features a dedicated toolbar for viewport management and history:

  • Undo & Redo: Step backward or forward through your recent node placements, wirings, and parameter changes. (Note: This history is specific to the Node Studio canvas, not your Revit model).
  • Zoom Controls: Use the Zoom In/Out icons to navigate massive graphs, or click Zoom All (Fit to Screen) to instantly frame all nodes within your viewport.
  • Lock View: Freeze the canvas panning and zooming to prevent accidental movement while wiring dense clusters of logic.

Once you have perfected a complex logical graph, you don’t need to rebuild it from scratch next time. Vellum allows you to Save your entire canvas layout—including nodes, wires, and customized groups—as a template. You can then Load these saved graphs into other schedules or projects, creating a standard library of automated auditing and styling scripts for your firm.


Experiment with the full Node Studio below. We have pre-loaded a real-world script for you: Highlighting all elements with a Fire Rating >= 45.

  1. Quick Add: Right-click on the canvas to find and add a new node.
  2. Wire it up: Drag from an Output handle to an Input handle. Try connecting one Output to multiple Inputs!
  3. Node Toolbar: Click a node to reveal the popup toolbar and try Freezing or Duplicating it.
  4. Group Nodes: Multi-select nodes and group them together to organize the workflow.

When you are actively building scripts, the Node Studio sits docked directly above your live schedule spreadsheet. Below are four examples of how complex logical pipelines instantly drive the graphical properties of the data layout beneath them.

Scenario A: Fire-Resistance Compliance Auditor

Section titled “Scenario A: Fire-Resistance Compliance Auditor”

This script represents a life-safety and hardware compliance check. It simultaneously extracts the Fire Rating of a Door and the Fire Rating of its Host Wall. It runs an equality check, inverts the boolean to isolate the failures, and automatically paints the mismatched rows in a stark red warning color.

shield

Scenario: Fire-Resistance Compliance Auditor

boltNative Parameters
expand_less
Parameter
Fire Ratingexpand_more
workspacesAdd Categories
expand_less
+ Add Categories...
✓ Walls
downloadFetch Params
expand_less
Categories In
Select Parameter
Fire Ratingexpand_more
drag_handleEquals (==)
expand_less
A
B
priority_highNOT (Invert)
expand_less
Condition
format_paintFormat Cells
expand_less
+ Target
All Rowsexpand_more
- Apply If
+ Text Color
#FF6666
+ Fill Color
+ Bold
Yesexpand_more
+ Size (pt)
table_viewRoom Schedule
DOORDOOR RATINGHOST WALL RATINGCOMPLIANCE
D-1021 HR2 HRMISMATCH
D-1032 HR2 HRPASS

Scenario B: Daylight Auditor (Window-to-Floor Area)

Section titled “Scenario B: Daylight Auditor (Window-to-Floor Area)”

Revit does not natively allow you to sum the area of all windows in a room and compare it to the floor area in a single schedule without heavy Dynamo scripting. This graph intersects Room Area data with Window Area data, sums the array, calculates the ratio, and flags any room that falls below a 10% daylight compliance threshold.

light_mode

Scenario B: Window-to-Floor Area (Daylight) Auditor

categoryAdd Categories
expand_less
+ Add Categories...
✓ Windows
Categories
downloadFetch Parameters
expand_less
Categories In
Select Parameter
Areaexpand_more
Param ID
data_arrayGet Column Data
expand_less
Select Column
Values Array
functionsMath.Sum
expand_less
Number List
Sum
data_arrayGet Column Data
expand_less
Select Column
Room Areaexpand_more
Values Array
horizontal_ruleDivide (/)
expand_less
AB
Result
numbersNumber
expand_less
Value
0.10
Number
chevron_leftLess Than (<)
expand_less
AB
Boolean
format_paintFormat Cells
expand_less
- Apply If
+ Target
All Rowsexpand_more
+ Fill Color
#FF6666
+ Bold
Yesexpand_more
table_viewRoom Schedule (Daylight Audit)
ROOMROOM AREAWINDOW AREADAYLIGHT RATIOCOMPLIANCE (>10%)
101200 SF40 SF20.0%PASS
102150 SF12 SF8.0%FAIL
103400 SF50 SF12.5%PASS

Scenario C: The Naming Convention Enforcer

Section titled “Scenario C: The Naming Convention Enforcer”

Checking if elements follow strict firm standards (e.g., Level-Room-Function-Type) is a massive QA/QC headache. This linear but powerful graph fetches the Type Mark, splits the string by hyphens, counts the resulting arrays, and highlights any element that does not possess exactly four naming segments.

spellcheck

Scenario C: The Naming Convention Enforcer

categoryAdd Categories
expand_less
+ Add Categories...
✓ Mechanical Equipment
Categories
downloadFetch Parameters
expand_less
Categories In
Select Parameter
Type Markexpand_more
Param ID
content_cutSplit Text
expand_less
String
Separator
-
Array
tagList Count
expand_less
List
Count
numbersNumber
expand_less
Value
4
Number
equalEquals (==)
expand_less
AB
Boolean
priority_highNOT (Invert)
expand_less
Condition
Result
format_paintFormat Cells
expand_less
- Apply If
+ Target
All Rowsexpand_more
+ Fill Color
#FFD700
table_viewEquipment Schedule (Naming QA)
ELEMENT IDTYPE MARK (LVL-RM-FUNC-TYPE)QA STATUS
384912L1-101-MECH-AHUCOMPLIANT
384915AHU-01NON-COMPLIANT
384999L1-MECH-FCUNON-COMPLIANT

This graph acts as a life-safety code checker. It divides the Room Area by its Occupancy Load Factor to find the total occupants, multiplies that by a code-required width factor (e.g., 0.2 inches per person), and checks if the Required Egress Width exceeds the Actual Door Width. If a bottleneck is detected, it triggers a conditional format to paint the row red.

sensor_door

Scenario D: Egress Bottleneck Calculator

boltNative Parameters
expand_less
Parameter
Areaexpand_more
downloadFetch Parameters
expand_less
Select Parameter
Occupancy Load Factorexpand_more
horizontal_ruleDivide (/)
expand_less
A (Area)B (Factor)
closeMultiply (*)
expand_less
A (Occupants)
B (Inches / Person)
0.2
downloadFetch Parameters
expand_less
Select Parameter
Door Widthexpand_more
chevron_rightGreater Than (>)
expand_less
A (Required Width)B (Actual Width)
format_paintFormat Cells
expand_less
- Apply If
+ Target
All Rowsexpand_more
+ Fill Color
#FF6666
+ Bold
Yesexpand_more
table_viewRoom Schedule (Life Safety Audit)
ROOMAREA (SF)LOAD FACTORREQ. WIDTHACTUAL WIDTHEGRESS STATUS
10110001002.0"36.0"PASS
102 (Assembly)30001540.0"36.0"BOTTLENECK
1035001001.0"36.0"PASS