Check contacts
check_contactsDouble-check where elements meet - set against set, at the bodies: clash (penetration), touch, gap, distance. Without b, a against itself only (b_missing says so, next tests a against its surroundings); gap and distance need b. Pairs are counted by kind; pairs lists at most 20, clash first: n_pairs counts all, n_pairs_listed this page. value_m: clash the thinnest width of the shared body along depth_axis (world [x,y,z]), not the travel that would part them; touch 0; gap and distance the shortest distance between the bodies in any direction - not a clear width along one axis. Two reinforcing bar or mesh sets are measured by their axes (source directrix): clash value_m is the depth along their common perpendicular; where a free bar end or a sharp kink decides, the body does (brep). A clash has no tolerance: any shared volume, also under tolerance_m, which only parts touch from gap; at other curved bodies (pipes, round columns) value_m can read wider than the overlap is deep. n_checked counts the pairs tested - an empty list with n_checked 0 means nothing was in reach, not "no clash". Capped per call: clash and touch run in rounds of at most 50 bodies and 625 hull-near pairs, whole hull neighbourhoods first, for up to 20 s; a pair whose hulls are apart counts in n_pairs_hull_separated. Gap and distance at most 20 pairs (more: MEASURE_TOO_LARGE; nearest has no cap); complete false: n_untested names the elements with a pair left untested, n_pairs_untested counts those pairs, never free of clashes; next tests every pair left, none twice, bound to this revision (none: narrow a or b). untested_pairs names the pairs the 20 s cut; one that alone outlasts them (pair_over_time_budget) no next sends again - its try tests it alone. coverage per set says how many elements had a testable body; partial_body: items of it failed, a pair with body_gap partial_body is a bound and its gaps unproven. Run it on new elements against their neighbours. Read-only.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "check_contacts"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | Which elements: exactly one of guid, guids, set, filter; required unless cursor | |
| b | No | Which elements: exactly one of guid, guids, set, filter | |
| along | No | Needs clash in kinds. Each listed clash pair gets station_ranges [{from_station_m, to_station_m, depth_m: how far b reaches into a in the section, from the outline of a}] from plumb sections square to the axis, bounds bisected to 0.01 m; none found says stations_reason (between_sections: thinner than step_m, try a smaller one). n_pairs_stationed and n_pairs_not_stationed count this page | |
| kinds | No | Default clash and touch | |
| cursor | No | Alone: the next page of an earlier answer; bound to its revision | |
| nearest | No | With gap or distance: per element of a only its nearest of b, exact; the rest of b lies farther by its hull. Head nearest {n_decided, n_pairs_measured} | |
| contacts | No | fast: touch between two planar bodies, approximate (source mesh, no contact_area, counts_mesh); clash, gap and distance stay exact. Default exact | |
| max_gap_m | No | Required with gap: gaps up to this are reported | |
| show_accepted | No | Pairs accepted with accept_contacts, left out of pairs and counts by default, stay in them marked acceptance accepted; n_accepted counts them either way | |
| skip_class_pairs | No | Class pairs judged harmless, e.g. [["IfcStairFlight","IfcSlab"]], exact class, either order: tested, but out of pairs and counts; skipped_class_pairs counts them per kind |