Navisworks: Clash¶
52 nodes. Types ending in [] are lists. An input with a default is optional.
Filter¶
Clash.Deduplicate¶
Keeps ONE clash per unique item pair — the same two elements clashing at five points, or mirrored across an A-vs-B and B-vs-A test matrix, count once. Wire the results of ONE test, or of several tests at once (the list of lists from Clash.Tests and ClashTest.Results, or several wires): everything is flattened first, so the pair is recognised across tests and both outputs are flat lists. Pairs are unordered; an element is recognised by its InstanceGuid, or, when the source file has none (DWG, NWC), by the scene node itself, so two sibling elements with the same name are never taken for one. The first result in input order is the representative, the rest come out on duplicates. 400 raw results, 60 real issues.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
any[] |
— | The clash results — from one test, or from several tests at once (a list of lists is flattened, and several wires are merged): mirrored A-vs-B / B-vs-A test pairs dedupe across the tests. |
Outputs
| Output | Type |
|---|---|
results |
ClashResult[] |
duplicates |
ClashResult[] |
Returns: The first result of each unique unordered item pair, and the duplicates that were dropped (both flat lists).
Tags: clash deduplicate duplicates unique pair mirror matrix noise merge
Clash.FilterByAngle¶
Keeps only the clash results whose crossing angle (see ClashResult.Angle) is within a degree range — e.g. 80–90 for near-perpendicular crossings, or 0–10 for parallel runs. The angle is always between 0 (parallel) and 90 (perpendicular), so the range stops at 90. Results with no measurable direction are dropped.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash results (e.g. from ClashTest.Results). |
minDegrees |
number |
0.0 |
Lowest crossing angle to keep (0 = parallel). |
maxDegrees |
number |
90.0 |
Highest crossing angle to keep (90 = perpendicular). |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
ClashResult[] |
The matching results, input order preserved (angle-less results are dropped). |
Tags: clash filter angle perpendicular parallel crossing degrees
Clash.FilterByDepth¶
Keeps clashes whose penetration depth falls in a range, in the unit you name — minDepth 0.025 with units Meters drops every grazing clash shallower than 25 mm, the #1 noise reducer. Depth is positive for overlaps (hard clashes); clearance-test results carry their gap as a NEGATIVE depth, so a range like -1..0 keeps clearance violations instead.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash results (e.g. from ClashTest.Results). |
minDepth |
number |
0.0 |
Smallest penetration depth to keep. Positive = overlap; clearance-test gaps read as negative depths. |
maxDepth |
number |
PositiveInfinity |
Largest penetration depth to keep (default: unlimited). |
units |
string |
"document" |
Unit of the depth numbers: "document" uses the file's internal unit (often feet!), or name the unit your numbers are in. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
ClashResult[] |
The matching results, input order preserved. |
Tags: clash filter depth penetration distance grazing significant units tolerance
Clash.FilterByItemProperty¶
Keeps clashes whose two items' PROPERTY values match a pair of texts, in either order — the semantic clash rule: category "Element", property "Category", value1 "Pipe", value2 "Wall" keeps pipe-vs-wall clashes whichever side the pipe landed on. An empty value matches anything (one-sided rules). Looks up the property on the item and, by default, its ancestors — clash items are often bare geometry while the data lives on the element above. The geometric sibling is Clash.FilterByOrientation.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash results (e.g. from ClashTest.Results). |
category required |
string |
— | The property category (tab) name, as the Properties window shows it (e.g. "Element", "Item"). |
property required |
string |
— | The property name inside that category (e.g. "Category", "System"). |
value1 required |
string |
— | Text one item's property value must match. Empty = any. |
value2 |
string |
"" |
Text the other item's property value must match (either order). Empty = any. |
mode |
string |
"contains" |
How the texts must match: contains, equals, starts with or ends with. |
searchAncestors |
boolean |
true |
True (default) also reads the property from the item's ancestors when the item itself lacks it — clash items are often geometry leaves while the data sits on the element or file above. |
caseSensitive |
boolean |
false |
True matches exact casing; false (default) ignores case. |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
ClashResult[] |
The matching results, input order preserved. |
Tags: clash filter property category discipline pair pipe wall rule semantic
Clash.FilterByOrientation¶
Keeps only the clashes between elements of the given box shapes, matched in either order — shape1=run + shape2=wall keeps pipes through walls, run/riser + slab keeps pipes through floors; Clash.FilterByAngle alone cannot tell those apart (both cross at ~90°). Shapes are ClashResult.Orientation's: slab, wall, riser, run, block, or any.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash results (e.g. from ClashTest.Results). |
shape1 |
string |
"any" |
Required shape of one element: any, slab, wall, riser, run or block. |
shape2 |
string |
"any" |
Required shape of the other element (the pair is matched in either order). |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
ClashResult[] |
The matching results, input order preserved (results without geometry are dropped). |
Tags: clash filter orientation wall floor slab pipe shape crossing
Clash.FilterBySet¶
Keeps clashes whose items belong to a selection/search set (either one, both, or a specific side) — sets are the coordination scope language: "only my package", "only against the existing building". invert turns it into the classic ignore-list: drop every clash touching the "Accepted penetrations" set. An item counts as in the set when itself OR any ancestor is a member, matching how Navisworks selections include descendants. The set input takes a set, its name, or a list of model items or sets, and a list is read as ONE combined set; to filter once per set, right-click the set socket, choose List Levels and @L1.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash results (e.g. from ClashTest.Results). |
set required |
any |
— | The set to test against: a selection/search set, its name, or a list of model items. |
which |
string |
"either" |
Which items must be in the set: either, both, item1 or item2. |
invert |
boolean |
false |
True keeps the results that do NOT satisfy the test — the ignore-list mode. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
ClashResult[] |
The matching results, input order preserved. |
Tags: clash filter set selection search scope ignore exclude membership
Clash.FilterBySnapshot¶
Turns "what is new since last week" into live clash results you can select, group, assign or report: compares the results with a snapshot saved by Clash.SnapshotToFile, using the same identity as Clash.CompareSnapshots (the test and the pair of items, by InstanceGuid or tree path), and keeps the new ones (not in the snapshot) or the persisting ones (already in it). The other group comes out on others. Clashes that were resolved no longer exist in the model, so they can only be listed by Clash.CompareSnapshots. The same two items clashing at several points are matched one for one, in order.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The live clash results (e.g. from ClashTest.Results). |
snapshotPath required |
string |
— | The snapshot .json written by Clash.SnapshotToFile (last week's file). |
keep |
string |
"new" |
new keeps the results that are not in the snapshot; persisting keeps the ones that are. |
Outputs
| Output | Type |
|---|---|
results |
ClashResult[] |
others |
ClashResult[] |
Returns: The results that were kept, and the others, both in input order.
Tags: clash filter snapshot new persisting delta baseline weekly compare history
Clash.FilterByStatus¶
Keeps only the clash results with the given status(es) — pick one from the dropdown, or wire several comma-separated ("New,Active"; the Clash.Statuses node builds that from toggles). The triage staple: drop the already-Approved ones and work the rest.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash results (e.g. from ClashTest.Results). |
status required |
string |
— | One or several of: New, Active, Reviewed, Approved, Resolved — comma-separated for several ("New,Active"; Clash.Statuses builds this from toggles). |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
ClashResult[] |
The matching results, input order preserved. |
Tags: clash filter status statuses new active approved resolved triage multiple
Group¶
Clash.AllGroups¶
Every result group of every clash test in the document, as ONE flat list — the whole-project entry point for group workflows: wire it into Loop.Item and let ClashGroup.Info hand each iteration its results, group name and test name. Saves walking Clash.Tests then ClashTest.Groups per test (ClashTest.Groups runs once per test and gives a list of lists). Tests without groups contribute nothing.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
groups |
ClashResult[] |
names |
string[] |
testNames |
string[] |
counts |
integer[] |
Returns: One flat list of every group, with each group's name, its test's name and its result count (index-aligned).
Tags: clash groups all project every tests flat loop batch
Clash.GroupResults¶
Puts an explicit list of clash results into a named group in Clash Detective — YOUR grouping rule, not a built-in one: filter results any way you like, then group what came out. Results already in other groups are left alone (skipped) unless moveExisting is true, which pulls them into this group. An existing same-named group is extended; re-runs are clean. An empty list (a filter that found nothing) changes nothing and says so; several wires are merged into one list.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash results to group (from ClashTest.Results, Clash.FilterBy*, ...). All must belong to the same test. |
groupName required |
string |
— | The group's display name — an existing same-named group is extended, otherwise one is created. |
moveExisting |
boolean |
false |
True pulls results that already sit in OTHER groups into this one; false leaves them where they are (they are counted as skipped). |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
test |
ClashResult |
group |
ClashResult |
added |
integer |
moved |
integer |
skipped |
integer |
Returns: The test, the stored group, and how many results were added, moved and skipped.
Tags: clash group results move triage bucket organize
Clash.GroupResultsByGridIntersection¶
Groups a test's results by the model's own grid: each group is named after the nearest grid intersection and level (e.g. "B-3 : Level 2"). Requires a document with grids (Revit/IFC sources). Rebuilds the test's result tree: every group the test already has (also one made by Clash.GroupResults) is dissolved first and a group's own status, assignee and comments are not kept; a bucket with only one result stays ungrouped (a group needs two or more), so a status held by a single result gets no group. Both are reported as warnings.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The stored clash test. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
test |
ClashResult |
groupCount |
integer |
Returns: The regrouped test and the number of groups created.
Tags: clash group grid intersection level location triage
Clash.GroupResultsByLevel¶
Groups a test's results by nearest level below each clash point (wire your level names and elevations) — per-floor triage. The elevations are in document units unless units names another unit. Rebuilds the test's result tree: every group the test already has (also one made by Clash.GroupResults) is dissolved first and a group's own status, assignee and comments are not kept; a bucket with only one result stays ungrouped (a group needs two or more), so a status held by a single result gets no group. Both are reported as warnings.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The stored clash test. |
levelNames required |
string[] |
— | Level names, index-aligned with the elevations. |
levelElevations required |
number[] |
— | Level elevations (Z), in the unit chosen under "units" (document units by default). |
units |
string |
"document" |
Unit of the elevations: "document" uses the file's internal unit (often feet!), or name the unit your numbers are in. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
test |
ClashResult |
groupCount |
integer |
Returns: The regrouped test and the number of groups created.
Tags: clash group level floor storey elevation triage
Clash.GroupResultsByProximity¶
Groups a test's results into clusters whose clash points lie within a radius of the cluster seed — one issue per hotspot. The radius is in document units unless units names another unit. Rebuilds the test's result tree: every group the test already has (also one made by Clash.GroupResults) is dissolved first and a group's own status, assignee and comments are not kept; a bucket with only one result stays ungrouped (a group needs two or more), so a status held by a single result gets no group. Both are reported as warnings.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The stored clash test. |
radius required |
number |
— | Cluster radius, in the unit chosen under "units" (document units by default). |
units |
string |
"document" |
Unit of the radius: "document" uses the file's internal unit (often feet!), or name the unit your number is in. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
test |
ClashResult |
groupCount |
integer |
Returns: The regrouped test and the number of groups created.
Tags: clash group proximity cluster radius triage
Clash.GroupResultsBySameItem¶
Groups a test's results so every clash involving the same element lands in one group (named after the element) — turns thousands of raw clashes into one issue per element. Rebuilds the test's result tree: every group the test already has (also one made by Clash.GroupResults) is dissolved first and a group's own status, assignee and comments are not kept; a bucket with only one result stays ungrouped (a group needs two or more), so a status held by a single result gets no group. Both are reported as warnings.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The stored clash test. |
useItem1 |
boolean |
true |
True to group on each result's item 1, false for item 2. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
test |
ClashResult |
groupCount |
integer |
Returns: The regrouped test and the number of groups created.
Tags: clash group same item element triage
Clash.GroupResultsByStatus¶
Groups a test's results by status (New/Active/Reviewed/Approved/Resolved) — one triage bucket per status in Clash Detective. Rebuilds the test's result tree: every group the test already has (also one made by Clash.GroupResults) is dissolved first and a group's own status, assignee and comments are not kept; a bucket with only one result stays ungrouped (a group needs two or more), so a status held by a single result gets no group. Both are reported as warnings.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The stored clash test. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
test |
ClashResult |
groupCount |
integer |
Returns: The regrouped test and the number of groups created.
Tags: clash group status triage bucket
ClashGroup.ByName¶
Finds a clash result group by test name + group name and opens it up: the results inside, the group's own status, and the count. The lookup half of group-based triage — feed the results to any filter/report node, or the group to ClashResult.SetStatus/Assign/Rename and SavedItem.AddComment. A list of test names (or tests) with a list of group names runs once per pair, one to one.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
any |
— | The clash test, or its display name. |
groupName required |
string |
— | The group's display name inside that test. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
group |
ClashResult |
results |
ClashResult[] |
status |
string |
count |
integer |
Returns: The group, the results inside it, the group's own status, and the result count.
Tags: clash group name fetch results status lookup
ClashGroup.Info¶
Everything about a clash result group, straight from the group object — the results inside, its name and status, and the TEST it belongs to (object and name). This is what makes whole-project group workflows one flat loop: Clash.Tests to ClashTest.Groups to List.Flatten to Loop.Item to this node, and every iteration knows its results, its group name and its test name without parallel lists. ClashGroup.ByName is the lookup-by-name twin.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
group required |
ClashResultGroup |
— | The result group (e.g. from ClashTest.Groups). |
Outputs
| Output | Type |
|---|---|
results |
ClashResult[] |
name |
string |
status |
string |
count |
integer |
test |
ClashResult |
testName |
string |
Returns: The results inside it, its name and status, how many results it holds, and the test it belongs to (object and name).
Tags: clash group info results name status test parent loop
Report¶
Clash.CompareSnapshots¶
Diffs two clash snapshots: clashes NEW since the baseline, clashes RESOLVED (disappeared), and clashes PERSISTING in both (with their previous status) — the weekly delta report no plugin does via live API. Pure file IO: needs no open model.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
oldPath required |
string |
— | The older snapshot .json (the baseline). |
newPath required |
string |
— | The newer snapshot .json. |
Outputs
| Output | Type |
|---|---|
newResults |
dict[] |
resolved |
dict[] |
persisting |
dict[] |
counts |
dict |
Returns: Result dictionaries per bucket plus a counts dictionary.
Tags: clash compare delta diff new resolved persisting report
Clash.ResultsTable¶
Makes a table of the clash results you wire in: one row per result with its test, group, name, GUID, status, distance, assignee, description, creation date, the two items (path and GUID) and the clash point. Wire any filter's output, so "the New clashes deeper than 25 mm" is one row each, ready for the Table nodes, Table.ToCsvFile, Excel.WriteTable or Report.Html. Distance and clash point are in document units unless units names another unit; the creation date is a real date. An empty list gives a table with the headers and no rows.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash results (e.g. from ClashTest.Results or any Clash.FilterBy* node). |
units |
string |
"document" |
Unit of the distance and the clash point: "document" uses the file's internal unit (often feet!), or name the unit you want the numbers in. |
Outputs
| Output | Type | What it gives |
|---|---|---|
table |
CamelGraphTable |
A table with the columns Test, Group, Result, Result GUID, Status, Distance, Assigned To, Description, Created, Item 1, Item 1 GUID, Item 2, Item 2 GUID, Center X, Center Y and Center Z. |
Tags: clash results table report export rows csv excel list filtered
Clash.SnapshotToFile¶
Saves a clash-run snapshot (per result: test, item identities, status, distance, clash point) as JSON — one half of the between-runs delta report. Items are identified by InstanceGuid when available, else by their tree path. Leave tests unwired for every test in the document; a wired list means exactly those tests, so an empty list (a filter that found no test) writes a snapshot with no results and says so. A relative file path means next to the graph.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
filePath required |
string |
— | Destination .json path; the directory is created when missing. |
tests any number of wires |
ClashTest[] |
null |
The tests to snapshot. Leave unwired for every test in the document; a wired list means exactly those tests, and an empty list writes a snapshot without results. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
filePath |
file |
resultCount |
integer |
Returns: The written path and the number of results captured.
Tags: clash snapshot save history delta baseline json
Clash.SummaryTable¶
Per-test clash counts by status (test × Total/New/Active/Reviewed/Approved/Resolved) — the clash summary matrix. The table output goes straight into the Table nodes, Table.ToCsvFile and Excel.WriteTable; rows and headers are the same data as plain lists. Leave tests unwired for every test in the document; a wired list means exactly those tests, so an empty list (a filter that found no test) gives a table with the headers and no rows, not a report on everything.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
tests any number of wires |
ClashTest[] |
null |
The tests to summarize. Leave unwired for every test in the document; a wired list means exactly those tests, and an empty list gives a table without rows. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
rows |
any |
headers |
string[] |
table |
dict |
Returns: Rows (one per test), headers, and the same as one table — wire the table straight into Table, CSV or Excel nodes.
Tags: clash summary table matrix counts report excel
Results¶
ClashResult.Angle¶
The angle in degrees (0–90) between the two clashing elements, taken from each element's overall direction (its bounding-box diagonal). ~0° means they run parallel/together, ~90° means they cross perpendicular — so you can filter clashes by crossing angle (e.g. keep only ~90° crossings). Returns NaN when an element has no measurable direction (a point-like box).
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
Outputs
| Output | Type | What it gives |
|---|---|---|
degrees |
number |
The angle in degrees (0–90) between the two elements' overall directions. |
Tags: clash angle degrees perpendicular crossing orientation direction
ClashResult.Assign¶
Assigns a clash result, or a whole result group, to a person or trade. A list of results runs the node once per result (lacing), so a list of results and a list of assignees pair up one to one; each result is its own edit. For a long list right-click the result socket, choose List Levels and @L2: the node then gets the whole list and assigns all of it in one step, one undo step. Works on Navisworks 2024 and 2025; on 2026 the node reports that it is not supported yet.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
any |
— | The clash result or result group; or, with list level 2 on this input, a whole list of them. |
assignedTo required |
string |
— | The assignee (e.g. "MEP", "j.smith"). |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
result |
any |
What was wired in (pass-through): the same result, group or list. |
Tags: clash result assign trade responsible group bulk
ClashResult.ByGuid¶
Finds clash results again from their GUIDs — the way back from a BCF topic or a snapshot to the live result: wire the guid output of BCF.ImportIssues and send the results to ClashResult.SetStatus. A GUID that belongs to a result group finds the group (the BCF export writes one topic per result or group). GUIDs may be written with or without braces, in any case. results holds what was found, in the order of the GUIDs; missing holds the GUIDs that matched nothing (not a GUID, or a result that is no longer in the tests you looked in). Leave tests unwired to search every test in the document; a wired list means exactly those tests.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
guids required |
string[] |
— | The GUIDs as text (e.g. the guid output of BCF.ImportIssues or of ClashResult.Info): one, or a list. |
tests any number of wires |
ClashTest[] |
null |
The tests to look in. Leave unwired for every test in the document; a wired list means exactly those tests. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
results |
ClashResult[] |
missing |
string[] |
Returns: The clash results or groups that were found, in the order of the GUIDs, and the GUIDs that were not found.
Tags: clash result guid find lookup bcf topic id byguid
ClashResult.Center¶
The clash point of a result, in document units.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
Outputs
| Output | Type | What it gives |
|---|---|---|
point |
Point3D |
The clash center point, in document units. |
Tags: clash result center point location
ClashResult.Documentation¶
How documented a clash already is — whether it has a saved viewpoint, redline markup, and how many comments. Filter to the reviewed/annotated ones, or find the ones still needing attention (commentCount = 0).
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
Outputs
| Output | Type |
|---|---|
hasViewpoint |
boolean |
hasRedlines |
boolean |
commentCount |
integer |
Returns: Whether it has a saved viewpoint, redline markup, and its comment count.
Tags: clash comments viewpoint redline reviewed documented annotated filter
ClashResult.Focus¶
Focuses the view on clash results the way double-clicking one in Clash Detective does: hides everything else (isolate), zooms the camera to the clashing pair, and optionally selects the elements. Wire one result, or a list to frame a whole group together. Follow with Viewpoint.SaveCurrent to keep the view; Appearance.ShowAll brings the model back. An empty list leaves the view as it is and says so.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
results any number of wires required |
ClashResult[] |
— | The clash result(s) to focus — one, or a list to frame together. |
isolate |
boolean |
true |
True hides everything except the clashing elements (Appearance.ShowAll undoes it). |
zoom |
boolean |
true |
True zooms the camera to the clashing elements. |
select |
boolean |
false |
True also selects the elements (fills the Selection window). |
paddingFactor |
number |
1.5 |
Zoom padding: 1 = tight framing, larger = more context. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
items |
ModelItem[] |
The clashing model items (pass-through for chaining, e.g. into Flow.Then or a viewpoint save). |
Tags: clash focus isolate zoom view show frame select
ClashResult.Info¶
Name, status, distance, description, assignee and creation time of a clash result, plus its GUID (what BCF topics and ClashResult.ByGuid use), the name of its test and the name of its group (empty when it is not in a group).
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
Outputs
| Output | Type |
|---|---|
name |
string |
status |
string |
distance |
number |
description |
string |
assignedTo |
string |
createdTime |
datetime |
guid |
string |
testName |
string |
group |
string |
Returns: Name, status, distance, description, assignee, creation time, GUID, the name of its test and of its group.
Tags: clash result info status distance
ClashResult.Items¶
The two model items involved in a clash result.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
Outputs
| Output | Type |
|---|---|
item1 |
ModelItem |
item2 |
ModelItem |
Returns: The clashing items.
Tags: clash result items elements pair
ClashResult.Orientation¶
ClashResult.Angle with world context: the crossing angle PLUS each element's bounding-box shape — "slab" (thin horizontal), "wall" (thin upright), "riser" (long vertical), "run" (long horizontal) or "block" — and its slope from horizontal (0–90°). This is what tells a pipe through a wall (run + wall) from a pipe through a floor (run/riser + slab) when the crossing angle alone is 90° in both cases. Box-based: a strongly diagonal linear element can read as planar; "none" means the element has no measurable box.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
Outputs
| Output | Type |
|---|---|
degrees |
number |
shape1 |
string |
shape2 |
string |
slope1 |
number |
slope2 |
number |
Returns: The crossing angle, each element's box shape (slab/wall/riser/run/block, "none" without geometry) and its slope from horizontal (0–90°).
Tags: clash orientation angle wall floor slab pipe shape slope vertical horizontal
ClashResult.Rename¶
Renames a clash result or result group — with lacing and String nodes this is batch renaming ("Clash1" → "Pipe vs Duct L02-B3").
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
SavedItem |
— | The clash result (from ClashTest.Results) or group. |
newName required |
string |
— | The new display name. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
result |
SavedItem |
The result (pass-through). Lace over results + String nodes for Smart-Results-style batch naming (e.g. "Pipe vs Duct L02-B3"). |
Tags: clash result rename name smart batch
ClashResult.SaveImage¶
Renders a clash snapshot (scene plus clash highlight) to a .png/.jpg/.bmp file — the picture half of every clash report.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
filePath required |
string |
— | Destination .png, .jpg or .bmp path; the directory is created when missing. |
width |
integer |
1280 |
Image width in pixels. |
height |
integer |
720 |
Image height in pixels. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
filePath |
string |
The written file path. Lace over result lists for a snapshot folder. |
Tags: clash result image snapshot screenshot report
ClashResult.SetDescription¶
Sets the description text of a clash result, or of a whole result group (context for reports and reviews). A list of results runs the node once per result (lacing), so a list of results and a list of texts pair up one to one. For a long list right-click the result socket, choose List Levels and @L2: the node then gets the whole list and edits all of it in one step, one undo step.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
any |
— | The clash result or result group; or, with list level 2 on this input, a whole list of them. |
description required |
string |
— | The description text. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
result |
any |
What was wired in (pass-through): the same result, group or list. |
Tags: clash result description set note group bulk
ClashResult.SetStatus¶
Sets the status of a clash result, or of a whole result group (wire the group from ClashTest.Groups or ClashGroup.ByName) — approve a group in one step. A list of results runs the node once per result (lacing), so a list of results and a list of statuses pair up one to one, e.g. the topic statuses from BCF.ImportIssues; each result is its own edit and its own undo step. For a long list (thousands of results) right-click the result socket, choose List Levels and @L2: the node then gets the whole list and edits all of it in one step, one undo step. Works on Navisworks 2024 and 2025; on 2026 the node reports that it is not supported yet.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
any |
— | The clash result or result group; or, with list level 2 on this input, a whole list of them. |
status required |
string |
— | One of: New, Active, Reviewed, Approved, Resolved. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
result |
any |
What was wired in (pass-through): the same result, group or list. |
Tags: clash result status set resolve approve triage group bulk
ClashResult.Size¶
The size of the clash overlap region — its bounding-box volume in document units³. Filter out tiny grazing clashes and keep the significant ones. Pair with Units.Convert for readable units.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
Outputs
| Output | Type | What it gives |
|---|---|---|
volume |
number |
The clash bounding-box volume in document units³ (0 when unavailable). |
Tags: clash size volume extent significance big small filter
ClashResult.Viewpoint¶
The camera viewpoint Navisworks generates for a clash result; optionally applies it to the current view.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
result required |
ClashResult |
— | The clash result. |
apply |
boolean |
false |
True to also make it the current view. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
viewpoint |
Viewpoint |
The viewpoint aimed at the clash. |
Tags: clash result viewpoint camera goto
Tests¶
Clash.RunAllTests¶
Runs every Clash Detective test in the document — the weekly coordination re-run in one node.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
tests |
ClashTest[] |
All tests after the run. |
Tags: clash run all tests batch
Clash.Status¶
A clash status as a dropdown (New/Active/Reviewed/Approved/Resolved) — wire it into ClashResult.SetStatus or Clash.FilterByStatus instead of typing the text.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
status |
string |
"New" |
New, Active, Reviewed, Approved or Resolved. |
Outputs
| Output | Type | What it gives |
|---|---|---|
status |
string |
The chosen status text. |
Tags: clash status dropdown choice new active reviewed approved resolved
Clash.Statuses¶
Pick SEVERAL clash statuses with toggles — the multi-select for Clash.FilterByStatus: switch on New and Active to work everything not yet reviewed. Outputs comma-separated text ("New,Active"), which every status input accepts.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
newStatus |
boolean |
true |
Include New results. |
active |
boolean |
false |
Include Active results. |
reviewed |
boolean |
false |
Include Reviewed results. |
approved |
boolean |
false |
Include Approved results. |
resolved |
boolean |
false |
Include Resolved results. |
Outputs
| Output | Type | What it gives |
|---|---|---|
statuses |
string |
The picked statuses as comma-separated text (e.g. "New,Active") — the form every status input accepts. |
Tags: clash status statuses multiple select toggle new active reviewed approved resolved
Clash.Tests¶
All Clash Detective tests in a document, including those inside folders.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
tests |
ClashTest[] |
Every clash test, including those nested in folders. |
Tags: clash tests detective all
ClashTest.ByName¶
Finds a clash test by its display name (searches folders too).
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
name required |
string |
— | The test's display name. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
test |
ClashTest |
The stored clash test. |
Tags: clash test byname find
ClashTest.ClearResults¶
Removes every result (and result group) of a clash test and leaves the test and its settings in place — the clean slate before a re-run. Statuses, assignments and comments on those results are lost.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The clash test to clear. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
test |
ClashTest |
The stored test, now without results. |
Tags: clash test clear results reset empty clean rerun
ClashTest.Create¶
Creates a clash test between two item selections — script the weekly test matrix instead of clicking it. If a test with that name already exists, ifExists decides: reuse (the default) hands back the existing test untouched, with all its results, statuses, assignments, comments and groups, and says so; update keeps those results and applies the type, tolerance and selections you wired (re-run the test afterwards); replace swaps in a brand-new empty test, so everything triaged on the old one is lost; error stops. A new test goes at the top level, or into the Clash Detective folder named under folder (the folder must exist). The tolerance is in document units unless units names another unit.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
name required |
string |
— | Display name for the test. |
itemsA required |
ModelItem[] |
— | Selection A (e.g. from a search or selection set). |
itemsB required |
ModelItem[] |
— | Selection B. |
testType |
string |
"Hard" |
One of: Hard, HardConservative, Clearance, Duplicate, Custom. |
tolerance |
number |
0.01 |
Tolerance in the unit chosen under "units" (document units by default); the clearance distance for clearance tests. |
units |
string |
"document" |
Unit of the tolerance: "document" uses the file's internal unit (often feet!), or name the unit your number is in. |
ifExists |
string |
"reuse" |
What to do when a test with this name already exists: reuse (keep it as it is, the default), update (keep its results and apply the new settings), replace (a new empty test, results are lost) or error. |
folder |
string |
"" |
Name of an existing Clash Detective folder to put a new test in; empty puts it at the top level. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
test |
ClashTest |
The stored clash test, ready for ClashTest.Run. |
Tags: clash test create new setup matrix
ClashTest.Delete¶
Deletes a clash test and all of its results from the document. Returns false (and changes nothing) when the test is not there, so a clean-up step can run twice. Undoable in Navisworks.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The clash test to delete. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
deleted |
boolean |
True when the test was removed; false when it was not in the document. |
Tags: clash test delete remove clean matrix
ClashTest.Duplicate¶
Duplicates a clash test — type, tolerance, rules and both selections — as a new test named "<name> copy" (or newName) in the same folder. The copy starts un-run: its results are cleared, so run it with ClashTest.Run. Errors if a test with that name already exists, so re-runs do not pile up copies — over a list of tests, leave newName empty or give each test its own name.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The clash test to copy. |
newName |
string |
"" |
Name for the copy ("" uses "<name> copy"). |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
test |
ClashTest |
The new stored test, placed in the same folder as the original. |
Tags: clash test duplicate copy clone variant matrix
ClashTest.Edit¶
Edits an existing clash test in place — name, test type, tolerance, merge-composites and the two selections; every input left at its default ("", "unchanged", -1, unwired) keeps the current value. The tolerance is in document units unless units names another unit. The test's existing results are kept but are stale after a change: re-run it with ClashTest.Run.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The stored clash test (from Clash.Tests, ClashTest.ByName or ClashTest.Create). |
newName |
string |
"" |
A new display name ("" keeps the current name). |
testType |
string |
"unchanged" |
Hard, HardConservative, Clearance, Duplicate or Custom ("unchanged" keeps the current type). |
tolerance |
number |
-1 |
The new tolerance, in the unit chosen under "units" (document units by default) — the clearance distance for clearance tests (any negative number, the default -1, keeps the current tolerance). |
mergeComposites |
string |
"unchanged" |
"yes" or "no" to switch the merge-composites option, "unchanged" to keep it. |
itemsA any number of wires |
ModelItem[] |
null |
Items to use as the test's selection A (leave unwired to keep the current selection). |
itemsB any number of wires |
ModelItem[] |
null |
Items to use as the test's selection B (leave unwired to keep the current selection). |
units |
string |
"document" |
Unit of the tolerance: "document" uses the file's internal unit (often feet!), or name the unit your number is in. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
test |
ClashTest |
The edited stored test. |
Tags: clash test edit modify tolerance type clearance hard selection update
ClashTest.Groups¶
All result groups of a clash test — groups, names, each group's own status and result count, index-aligned. The overview half of group-based triage; ClashGroup.ByName opens a single one. Wire a test, its name, or a list of them: with a list the node runs once per test and every output is one list per test (List.Flatten joins them).
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
any |
— | The clash test, or its display name. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
groups |
ClashResult[] |
names |
string[] |
statuses |
string[] |
counts |
integer[] |
Returns: The groups with their names, statuses and result counts, index-aligned.
Tags: clash test groups list names statuses overview
ClashTest.Info¶
Name, status, type, tolerance, last run time and result count of a clash test. The tolerance is in document units unless units names another unit.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The clash test. |
units |
string |
"document" |
Unit to give the tolerance in: "document" uses the file's internal unit (often feet!), or name a unit. |
Outputs
| Output | Type |
|---|---|
name |
string |
status |
string |
testType |
string |
tolerance |
number |
lastRun |
datetime |
resultCount |
integer |
Returns: Name, status, type, tolerance, last-run time and result count.
Tags: clash test info status tolerance
ClashTest.Name¶
The display name of a clash test — the one-output companion of ClashTest.Info for wiring names into reports, group lookups and file paths.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The clash test. |
Outputs
| Output | Type | What it gives |
|---|---|---|
name |
string |
The test's display name. |
Tags: clash test name display title
ClashTest.Rename¶
Renames a clash test — wire a test or its current name. Batch-rename the whole matrix via lacing: a list of tests (or of names) and a list of new names pair up one to one, one test per name.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
any |
— | The clash test, or its current display name. |
newName required |
string |
— | The new display name. |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type | What it gives |
|---|---|---|
test |
ClashTest |
The stored test (pass-through for chaining). |
Tags: clash test rename name
ClashTest.Results¶
The individual results of a clash test (grouped results are flattened).
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The clash test. |
Outputs
| Output | Type | What it gives |
|---|---|---|
results |
ClashResult[] |
Every result, with grouped results flattened. |
Tags: clash test results clashes
ClashTest.Run¶
Runs one clash test now and reports the result count.
Inputs
| Input | Type | Default | What it does |
|---|---|---|---|
test required |
ClashTest |
— | The stored clash test (from Clash.Tests, ClashTest.ByName or ClashTest.Create). |
document |
Document |
null |
The document (defaults to the active document). |
Outputs
| Output | Type |
|---|---|
test |
ClashResult |
resultCount |
integer |
Returns: The test (pass-through) and its result count after the run.
Tags: clash test run execute detect