Problem
CurveRelation::SurfaceCurve carries its pcurves as a flat, unordered
associated_geometry: Vec<NodeId>:
SurfaceCurve {
curve_3d: NodeId,
associated_geometry: Vec<NodeId>,
master: MasterRepresentation,
}
A surface curve is the intersection of two surfaces, and each side carries
its own parameter-space image. Which pcurve belongs to which surface is
load-bearing geometric information, and the current model does not record
it: the list is positional at best, and validation accepts any mix.
expect_reference(.., ExpectedReference::CurveOrSurface) is the only
check, so a single-entry list, a swapped pair, or three unrelated nodes
are all equally legal.
Why it matters
Trimming a curved face needs the edge image in that specific surface
parameter domain. With two candidate pcurves and no recorded ownership, a
consumer must guess by re-inverting the surface, which is exactly the
operation the pcurve exists to avoid and is not generally solvable in
closed form.
Exchange formats state the pairing explicitly, so the information is
present at the boundary and is being discarded on the way in.
Done when
- a surface curve records which pcurve belongs to which of its two
surfaces, rather than an unordered list
- the distinction survives a round trip through the graph
- validation refuses a surface curve whose pcurve/surface pairing is
incomplete or contradictory, instead of accepting any node mix
- a single-sided surface curve stays expressible: not every edge has two
parametric sides
- existing
SurfaceCurve construction sites migrate, with the master
representation semantics unchanged
Problem
CurveRelation::SurfaceCurvecarries its pcurves as a flat, unorderedassociated_geometry: Vec<NodeId>:A surface curve is the intersection of two surfaces, and each side carries
its own parameter-space image. Which pcurve belongs to which surface is
load-bearing geometric information, and the current model does not record
it: the list is positional at best, and validation accepts any mix.
expect_reference(.., ExpectedReference::CurveOrSurface)is the onlycheck, so a single-entry list, a swapped pair, or three unrelated nodes
are all equally legal.
Why it matters
Trimming a curved face needs the edge image in that specific surface
parameter domain. With two candidate pcurves and no recorded ownership, a
consumer must guess by re-inverting the surface, which is exactly the
operation the pcurve exists to avoid and is not generally solvable in
closed form.
Exchange formats state the pairing explicitly, so the information is
present at the boundary and is being discarded on the way in.
Done when
surfaces, rather than an unordered list
incomplete or contradictory, instead of accepting any node mix
parametric sides
SurfaceCurveconstruction sites migrate, with the masterrepresentation semantics unchanged