Commands  ›  Clash Manager / Solver  ›  Clash Solver Offset Service Around Duct Bounding Box

Clash Solver Offset Service Around Duct Bounding Box

Clash Manager / Solver writes to model Public API · not yet exposed

Coming soon

Before you run this

Active document; service + duct resolvable; both have BoundingBox; default 3D view.

After it runs

Zero or one ElementTransformUtils.MoveElement inside inner Transaction.

When to use this

Don't use this when

Non-duct obstructions — use OFFSET_SERVICE_TOWARD_SPACE variants.

Inputs

NameKindTypeRequiredDefaultDescription
PresetKind config string no "clash_tolerances" Deterministic config preset

Decision flow

1) Resolve service + duct (resolvers or two-element selection in order).
2) Read both BoundingBoxes; WireError if either missing.
3) Determine vertical relationship: if service centre Z ≤ duct centre Z → axis = -Z (offset below); else +Z (above). "auto" default.
4) step_ft = duct.Max.{axis} - duct.Min.{axis} (duct's extent on that axis) + envelope_mm/304.8.
5) Delegate TryDirectionalMoveOnService.ProbeAndMove(doc, service, axis, step_ft, threshold_ft, centreFallback=false).
6) Emit outcome + picked_axis + step_mm.

What you'll see in the chat

on start
Offsetting service around duct BB…
thinking
Reading both BBs…
Picking axis (above or below duct)…
Delegating to DirectionalMoveService…
on success
Offset around duct by {step_mm} mm on {picked_axis}.
on failure
Offset around duct failed: {error}

REST API

Not yet exposed

This command does not carry a [RestApi] attribute today. Once tagged, this section will auto-populate with:

  • POST /api/v1/commands/clash_solver_offset_service_around_duct_bounding_box
  • Request body schema (from [RestApiParam])
  • Response schema (from [RestApiResponse])
  • curl / JS / Python code examples

Keywords & intent patterns

clashsolveroffsetservicearoundductboundingbox · offset around duct · pipe-under-duct offset

PillarClash Manager / Solver