Wire Harness Workbench
Id: wireHarness · Fourth entry in the workbench dropdown
Wire harness is for routed wire runs: a part declares its connection points (named
points with a direction, held in the part's ports block and managed in the
Qualify pane), you place
Waypoints where runs must pass through one spot, draw
Splines whose end anchors attach to those points, and list the wires
you need in the Wire Harness panel. The model routes every wire through the spline
network on every rebuild and sweeps a bundle solid along each spline a wire runs through.
There is no Route button — the router is part of the feature history, so a wire re-routes
the moment a connection point or waypoint moves or a spline changes.
What it offers
Six features: Waypoint (WP), Spline (SP), Sketch, Datium, Plane — a waypoint usually sits
on geometry you sketch or place — and Assembly Component
(ACOMP), because a harness routes across placed parts whose connectors carry the connection
points. Waypoint and Spline are also offered in Modeling; what is this
workbench's alone is the panel.
Panels
Wire harness claims three panels (see the panel matrix):
- Wire Harness (
wireHarness) — the connection list, shown only here and in All; - BOM and Constraints — Assembly's two, claimed here too, so a harness document has its components and their constraints to hand. Every wire is its own BOM line with its cut length.
Toolbar buttons
The one button is the way in to a part's connection points: the Qualify pane is on screen only while the part declares some, so a part that declares none needs somewhere to declare its first.
| Button | Id | Offered | What it does |
|---|---|---|---|
| Declare connection point | wireharness.declare_point | while the part declares no connection points | writes the part's first port group — J1, purpose wiring, one point at the origin — and brings the Qualify pane forward |
Typical workflow
- Model or insert the parts that carry the connectors.
- Declare a connection point at each connector — the cable ends. In a connector's own part that is the Qualify pane (the Declare connection point button writes the first one); set a point's Point (under Seated on) to the connector face to seat it there, with the face normal as its direction. Add a Waypoint where several runs must pass through one point (a grommet, a clip) — a wire entering a waypoint on one side leaves on the other.
- Add a Spline for each allowed path between two points. In its form, open Anchors
and press Attach… on the first and last anchor, then click the connection point or
waypoint in the viewport. The anchor snaps to it and follows it from then on. Each
attachment has a side,
A(leave along the point's direction) orB(against it) — this is what decides which physical side of a waypoint a spline occupies. - In the Wire Harness panel press Add wire, pick its From and To connection points (terminations only — never a waypoint) and enter its diameter.
- Read the row: Length is the routed length, Status says
Routedor why not. Hover a row to highlight its two end points and the bundle solids it runs through. - Read the cut lengths in the BOM.
Connection points inside placed parts
A connector modelled as its own part carries its connection points into every assembly it is
inserted in: each is addressed {component}:{port}.{point} (ACOMP2:J1.VCC), posed with the
instance. In this workbench (and in All) those points draw in red beside the document's own,
a spline anchor attaches to them through the picker like any other, and the Wire Harness
panel lists them by that address. Modeling and Assembly keep them hidden. Two instances of
one connector are two sets of points, never one.
Routing rules
In the router, a connection point and a waypoint are both a port: a point with a direction.
- The network is the set of splines whose first and last anchors attach to two different ports. A spline attached at one end only is listed under the panel header as a problem.
- Every port has two sides. A segment occupies, at each of its ports, the physical side the
curve actually leaves or arrives on (read from the curve's end tangent — an anchor
attached on side
Aat the end of a spline arrives from the port'sBhalf-space). - A route may pass through a waypoint only by entering on one side and leaving on the other.
It may never pass through the same port twice; when the shortest sided path would, the
router looks for the shortest path that does not, and reports
Port reusedwhen there is none. - Wire ends must be terminations. A waypoint used as an end, a port that is not in the model, the same port at both ends, and a model with no attached splines each have their own status.
- A route's length is the arc length of every spline it crosses, measured along the
curve from one port's base point to the other's, including each port's straight
extensionrun. It is the curve's exact length rather than a chord estimate, because a wire's cut length is read from it and a chord sum reads short. - Shared splines bundle: every routed wire adds its diameter to each spline it crosses, and
the bundle diameter is
sqrt(Σ d² / 0.75) × 1.1(75 % packing, 10 % safety). The bundle is a real solid namedWireHarness:<spline id>; it appears in the Scene tree like any other solid and can be exported. It is built by the harness rather than by a feature, so with a bundle selected the context bar's Edit owning feature is greyed out and its tooltip points you at the spline the bundle follows and the wires in the Wire Harness panel. Untick Build bundles to keep the routing without the solids. - A bundle that is not built says why, on its own line under the panel header (bundles switched off with Build bundles say nothing). A bundle whose spline turns TIGHTER than the bundle's own radius reads no bundle solid — bend too tight for the bundle; hover the line for which bend: where on the spline it is, the bend radius there, and how far the bundle reaches into it. A cable cannot be pushed round a corner sharper than itself and neither can the solid — ease that bend (move the anchor, or raise the spline's Bend radius), or take wires out of the bundle until it is thin enough. The routing, the lengths and every other bundle are unaffected: only that one bundle's solid is missing.
Cut lengths
Every wire is its own line in the BOM, carrying its cut length for an automatic wire-cutting machine: MF QTY is the routed length plus the cut margin, added once to each wire. Two wires down the same splines are two lines, each with its own margin. Set the margin in the BOM's header. It is saved with the harness block.
A cut length is shown only when the last rebuild routed the model as it stands. While a
rebuild is running, after a rebuild was cancelled, while the history is rolled back, before
the first rebuild, and for a wire the router could not route, the line says so instead of
showing a number. Rolled back
matters most: a spline past the rollback is not in the network, so a wire can route over
another path and still read Routed here, with a length that is not the model's.
Where the data lives
The connections are the document's wireHarness block (see
File formats): { connections: [{ id, name, from, to, diameter }], idCounter, buildBundles, cutMargin }, with from / to holding connection-point
addresses (J1.VCC, ACOMP3:J1.VCC) — the address is the point's identity; there is no
second hidden id. cutMargin is omitted while it is 0. Routing results are never saved — they
are recomputed on every rebuild.
Limitations
Flattened formboard drawings and drawing-sheet connection tables are not implemented.
A bundle through a bend tighter than its own radius is reported, not built: the swept surface trimmed against itself is not built for any section yet.