Skip to main content

Module profile

Module profile 

Source
Expand description

Turning a solved sketch into profiles: closed loops of curves grouped into regions (an outer loop with its holes), and those loops into the NURBS curves that extrude and revolve consume.

Connectivity is structural. Two curves are joined exactly when they share an endpoint (the same point, or points joined by crate::Constraint::Coincident) — never because their ends happen to be close. Curves hanging off a loop (open chains, e.g. a helper line) are ignored; curves that branch (three or more meeting at a point) are an error, since the regions they bound are ambiguous.

Nesting and orientation are answered on the real curves. Which loop lies inside which, and which way a loop winds, both come from casting a ray and counting crossings with the kernel’s own curve_curve_intersect — the same thing geop_core_topology::contains::face::loops_contain does for a face’s trim, on the same NURBS curves the profile is made of. Polylines here are for drawing only.

Structs§

ProfileEdge
One curve of a loop, traversed forwards or backwards.
ProfileLoop
A closed chain of curves, each ending where the next starts.
ProfilePiece
One NURBS piece of a profile loop, and where it comes from in the sketch: piece index of sketch curve source (counted in the curve’s own direction), running from joint start to joint end in the loop’s direction.
Region
An area of the sketch: an outer loop (counter-clockwise) and the holes in it (clockwise).

Enums§

ProfileJoint
Where a joint of a profile comes from in the sketch: a sketch point, or a point a sketch curve had to be split at to become NURBS pieces (see ProfileLoop::to_nurbs) — Split { curve, index } is where piece index of curve starts, counted in the curve’s own direction. A circle has no points of its own, so all of its joints are splits, index = 0 included.

Functions§

curve_polyline
Points along a curve from its start to its end (a circle starts and ends at angle 0), dense enough for display and nesting tests.