pub fn curve_path(graph: &GeometryGraph, id: NodeId) -> GeomResult<CurvePath>Expand description
The curve id a distance runs along, flattened into the neutral
CurvePath (#290): the pieces a station on it is measured along, its
curves copied, to be read through the curve-evaluation contract’s
path_* queries.
A relation (a composite, a trim, a surface curve whose 3D curve
governs, a curve placed at a station, nested in any combination) is
flattened as a station basis is (see the module documentation); an
atomic curve is one piece, whole, an untrimmed line its parameter domain
[0, 1] as inside a composite (a station along the atomic curve itself
reads a line unbounded, so query an atomic basis through the per-curve
methods). Placements at stations are resolved here, each exact only on
an exactly read frame. The path is not measured: the contract’s
provider refuses one whose pieces do not meet or measure alike, by name.
Every piece is stated, its span ending where the kernel measures its
curve to end (an offset’s own length, a B-spline’s arc length): a
caller without the graph that builds the same pieces with their ends
left open (PathPiece::whole, #298) reads the same path.
§Errors
A node that is not a curve, an instanced curve or a relation no distance runs along, and a trim or a placement that does not resolve, each by name.