Workflow¶
17 nodes. Types ending in [] are lists. An input with a default is optional.
Nodes¶
Flow.Require¶
Stops with your own error message when a condition is false; when it is true the value passes through unchanged. The nodes wired after it do not run after a false condition, so put it in front of a step that must not run on bad input (replacing the open model, deleting files). Flow.When only skips quietly and Flow.Try only catches. To require that every item of a list passes, wire List.AllTrue into 'condition'.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
value required |
any |
— | The value to pass on when the condition is true. Wire it into the step that must not run on bad input. |
condition required |
boolean |
— | True lets the value through; false stops here with the message. To demand that every item of a list passes, wire List.AllTrue into this input. |
message |
string |
"A required condition is false." |
What to tell the person when the condition is false: say what is wrong and what to do about it. |
Outputs
| Output | Type | What it gives |
|---|---|---|
value |
any |
The value input, unchanged, when the condition is true. |
Tags: require assert guard precondition check validate must fail stop abort error raise
Flow.Then¶
Passes a value through unchanged AFTER the wired 'after' nodes have run — makes the execution order of side-effect nodes explicit (e.g. set a section box, THEN save the viewpoint). 'after' takes as many wires as you like, one per node that must run first; what they carry is ignored.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
value required |
any |
— | The value to pass through unchanged. |
after any number of wires required |
any[] |
— | Wire any number of nodes that must run first (one wire per node; their values are ignored). A branch that a Flow.When switched off counts as nothing; the node is skipped only when every branch wired here is off. |
Outputs
| Output | Type | What it gives |
|---|---|---|
value |
any |
The value input, unchanged. |
Tags: sequence order passthrough wait after chain depend
Flow.Try¶
Carries on after a failure: gives the node's result, or your fallback plus the error text when that node failed — nothing after it turns red.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
value required |
any |
— | The node output to try. Wire the node that might fail. |
fallback |
any |
null |
What to output when it failed (nothing by default). |
Outputs
| Output | Type |
|---|---|
result |
any |
failed |
boolean |
error |
string |
Returns: The "result" (the value, or the fallback after a failure), whether it "failed", and the "error" text.
Tags: try catch error recover fallback optional safe exception on error
Flow.Wait¶
Waits the given number of seconds (at most 600; nothing can stop the wait early, so Navisworks looks frozen meanwhile), then passes the value through unchanged - use it to pause between steps of a workflow. In a loop, wire the loop item (or something made from it) into value: a Flow.Wait with only fixed inputs belongs to no loop and waits once.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
value required |
any |
— | The value to pass through after the pause (it is also what makes the pause happen in the right place). |
seconds |
number |
1 |
How long to wait, 0 to 600 seconds (fractions allowed). Nothing can stop the wait before it is over, so it is kept short. |
Outputs
| Output | Type | What it gives |
|---|---|---|
value |
any |
The value input, unchanged. |
Tags: wait sleep pause delay timer throttle seconds
Flow.When¶
Runs the nodes wired after it only when the condition is true; when false they are skipped (idle, not an error) — e.g. export only if there are clashes.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
value required |
any |
— | The value to pass on when the condition is true. Wire the output of the node that must have run. |
condition required |
boolean |
— | True lets the branch run; false skips everything wired after this node. |
Outputs
| Output | Type | What it gives |
|---|---|---|
value |
any |
The value input, or nothing when the condition is false. |
Tags: if only skip branch gate conditional run if guard
Loop.Collect¶
Closes a loop and collects one value per iteration. Wire Loop.Item's 'loop' output into 'loop' and the per-item value into 'value'; 'results' is the list of collected values, available after the loop. Downstream of 'results' runs once. An iteration that a Flow.When switched off adds nothing to 'results'. When some iterations fail, their place in 'results' is empty and this node shows a warning that counts them and names the first failure.
Interactive node: it has its own controls on the canvas.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
loop required |
any |
— | Loop handle from Loop.Item. |
value required |
any |
— | The value to collect this iteration. |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
any[] |
One collected value per item. |
Tags: for each foreach iterate repeat per item batch collect gather end
Loop.Item¶
Yields the current item of a loop. Wire a list into 'items', wire 'item' into the nodes that should run per item, and wire 'loop' into a Loop.Collect to close the loop. The engine runs everything between here and Loop.Collect once per item, in order. If the list comes from a node that failed, or from a Flow.When that is false, the loop does not run and the nodes after it wait, like after any failed or switched-off node. Use a loop when the work per item is built from ordinary nodes; use Workflow.ForEach with Action.* nodes when it is a fixed list of steps such as isolate, zoom, save viewpoint.
Interactive node: it has its own controls on the canvas.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
items required |
any[] |
— | The list to iterate. |
Outputs
| Output | Type | What it gives |
|---|---|---|
item |
any |
The current item (per iteration). |
index |
integer |
The current 0-based index. |
count |
integer |
The total number of items. |
loop |
any |
Loop handle — wire into Loop.Collect to close the loop. |
Tags: for each foreach iterate repeat per item batch loop each
Workflow.ForEach¶
Runs a sequence of actions on each item, one item fully before the next (zoom, isolate, save viewpoint, then the next item), the per-item ordered loop that wiring and lacing cannot express. Wire the items and the Action.* nodes into 'actions' (several wires run in the order they were made; a List.Create of them works too). 'results' has one entry per item: what its actions collected (one value as it is, several as a list, the item itself if the actions collect nothing), or empty when that item failed. By default a failing item is skipped and the node ends amber with one line that names the items and actions that failed; set onError to stop to end with an error at the first failure instead (what was already done stays done). Press Stop to end it between two actions. Use this node for a fixed, readable list of actions with {name} and {index1} naming (one viewpoint per item); use Loop.Item and Loop.Collect when the work per item is built from ordinary nodes.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
items required |
any[] |
— | The items to iterate. Each element becomes the current item for one pass; an element may itself be a group (a sub-list). |
actions any number of wires required |
any[] |
— | The actions to run per item, in order. Wire the Action.* nodes straight in (several wires run in the order they were made), or one List.Create of them. An element that is not an action is skipped with a warning. |
onError |
string |
"continue" |
What a failing item does: "continue" (the default) records an empty result for it and goes on with the next item; "stop" ends the node with an error at the first failure (the items before it stay done). |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
any[] |
One entry per item: the value that item's actions collected (unwrapped when a single value, a list when several, the item itself when none, empty when the item failed). For a per-item Save Viewpoint workflow this is the list of created viewpoints. |
Tags: workflow foreach for each loop iterate sequence per item batch each
Actions¶
Action.Ghost¶
Per item: applies a TEMPORARY transparency to the given items (wire the whole found set) so the highlighted item reads against a faded context. Captured per viewpoint. Put before Action.Highlight; reset each item with Action.ResetTemporaryAppearance.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
items any number of wires required |
ModelItem[] |
— | The items to fade each iteration (usually the whole found set — the current item is made solid again by Action.Highlight). |
transparency |
number |
0.85 |
0 = opaque, 1 = invisible (0.85 fades to a faint context). |
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
A ghost action for Workflow.ForEach. |
Tags: action ghost fade transparency temporary workflow foreach context
Action.Highlight¶
Per item: applies a TEMPORARY color to the current item so it stands out — captured per viewpoint by Action.SaveViewpoint, so each view keeps its own highlight. Pair with Action.Ghost to fade the rest.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
color required |
any |
— | A Color, a "#RRGGBB" string, or a list of three numbers. |
transparency |
number |
0.0 |
Transparency for the highlighted item (0 = solid, so it stands out of the ghosted rest). |
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
A highlight action for Workflow.ForEach. |
Tags: action highlight color temporary workflow foreach spotlight
Action.Isolate¶
Per item: shows the current item and hides everything else (Appearance.Isolate). Place before Save Viewpoint to bake the isolation into each view.
No inputs.
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
An isolate action for Workflow.ForEach. |
Tags: action isolate workflow foreach only focus
Action.OverrideColor¶
Per item: overrides the current item's color (Appearance.OverrideColor).
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
color required |
any |
— | A Color, a "#RRGGBB" string, or a list of three numbers. |
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
A recolor action for Workflow.ForEach. |
Tags: action color override workflow foreach paint tint
Action.ResetAppearance¶
Per item: removes color and transparency overrides from the current item (Appearance.Reset).
No inputs.
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
A reset-appearance action for Workflow.ForEach. |
Tags: action reset appearance workflow foreach restore original
Action.ResetTemporaryAppearance¶
Per item: clears all TEMPORARY color/transparency overrides (Appearance.ResetTemporary) — put first in the sequence so the previous item's highlight/ghost doesn't linger into this view.
No inputs.
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
A reset-temporary-appearance action for Workflow.ForEach. |
Tags: action reset temporary appearance workflow foreach clear clean
Action.SaveViewpoint¶
Per item: saves the current view as a saved viewpoint named from the item. The name is a template: {name} (or {item}) is the item's name, {index} its position from 0, {index1} (or {n}) its position from 1 and {count} the number of items, so 'View {index1} of {count}: {name}' numbers the views; an empty name uses the item's name, and a viewpoint with the same name in the same folder is replaced. With bakeOverrides on, the current isolation AND temporary color/transparency are stored in the view, so recalling it restores that exact look. Collected as the loop's per-item result.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
name |
string |
"{name}" |
Viewpoint name. Tokens: {name} or {item} = the item's name, {index} = its position counting from 0, {index1} or {n} = counting from 1, {count} = how many items there are. An empty name uses the item's name. Default {name}. |
folder |
string |
"CamelGraph Views" |
Viewpoint folder to file them under (null/empty stores at the top level). |
bakeOverrides |
boolean |
true |
True to capture the current hidden AND temporary color/transparency overrides into the viewpoint, so recalling it restores that exact isolation and highlighting. |
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
A save-viewpoint action that collects the created viewpoint. |
Tags: action viewpoint view save workflow foreach capture snapshot
Action.ShowAll¶
Per item: un-hides every item in the model (Appearance.ShowAll) — a reset step, e.g. before re-isolating.
No inputs.
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
A show-all action for Workflow.ForEach. |
Tags: action showall workflow foreach reveal reset unhide
Action.ZoomTo¶
Per item: frames the current item in the view (Camera.ZoomToItems). Place before Save Viewpoint so each view is centred on its item.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
paddingFactor |
number |
1.5 |
Space to leave around the item (1 = tight fit). |
Outputs
| Output | Type | What it gives |
|---|---|---|
action |
IWorkflowAction |
A zoom action for Workflow.ForEach. |
Tags: action zoom workflow foreach frame fit focus