Expand description
Building topology from geometry.
One level above Model’s raw builders: these take geometry, derive the
topology it implies, check the invariants that need geometry to check, and
report history.
§What “checked” means here
Model::add_wire verifies that its children are edges. That is all it can
do, because it has no geometry. make_wire additionally verifies that
consecutive edges actually meet, which is the property that makes a wire
a connected path rather than a bag of edges, and which every algorithm
downstream assumes without checking. A wire whose edges do not join produces
a face with a gap in its boundary, and the first thing to notice is usually
a boolean, several operations later.
Modules§
- roles
- Roles a builder assigns, so a rebuild can match entities up.
Functions§
- attach_
pcurve - Attach a pcurve to an edge, describing it in a surface’s parameter space.
- attach_
seam - Attach a seam representation to an edge: one pcurve per side of a closed surface’s join.
- belted_
wire - The one wire a face on a B-spline closed round in
utakes when its file bounds it by rings alone and writes no seam: each ring runs the whole period along the chart, from one end column to the other, and without a seam no ring meets another, so the boundary encloses nothing in the chart. The seam is the surface’s own column at the period’s join, exact (the iso-curve the control columns trace), from where one ring’s walk ends to where the next begins; walked up one end column and back down the other, it closes the two rings into one loop. A single ring opposite a row the surface collapses to a point (a dome’s pole) takes the seam to that point and back, and the pole’s run across the chart is laid byclosed_at_poles. - chain_
wire_ branches - Put a face’s wires on one branch of a periodic chart.
- closed_
at_ poles - A wire’s edge uses with the chart closed where the surface collapses.
- covers_
whole_ surface - Whether a face covers the whole of its surface: it has a wire, and every edge its wires walk has no length or is a seam of that surface walked once each way.
- edge_
vertices - The vertices an edge runs between, in the direction it is traversed.
- edges_
turn - How a closed walk of edge occurrences turns about
axis: twice the area it encloses projected square to the axis, signed by the right-hand rule, from points sampled along the edges in traversal order. Positive for a ring walked counter-clockwise aboutaxis. - find_
plane - The plane a shape lies in, if it lies in one.
- is_
shell_ closed - Whether every edge in a shell is shared by exactly two faces.
- is_
wire_ closed - Whether a wire’s last edge returns to its first edge’s start.
- make_
apex_ band - Build the face of a revolution cap: one closed ring belting a cone, with the apex the file never wrote synthesised as the degenerate ring the band needs.
- make_
band_ between - Build the face of a band between two closed rings that need not be circles, each with a caller-supplied chart image.
- make_
band_ of_ rings - Build the face of a band between two closed rings of edges on a periodic analytic surface, joined by a synthesised seam.
- make_
compound - Build a compound from any shapes, with history.
- make_
compsolid - Build a shell from faces.
- make_
edge - Build an edge on
curve, bounded by its own endpoints. - make_
edge_ between - Build an edge between two existing vertices, on
curve. - make_
face - Build a face on
surface, bounded bywires. - make_
face_ on - Build a face on a surface the model already holds.
- make_
face_ with_ pcurves - Build a face on
surfacefrom per-wire edge lists, attaching an exact same-parameter pcurve to every edge. - make_
natural_ face - Build a face covering the whole of
surface, with no trimming. - make_
polygon - Build a wire of straight segments through a sequence of points.
- make_
profile_ revolution_ band make_revolution_bandon a curve revolved a whole turn about an axis (RevolutionSurface), its rings the parallels through the profile’s two ends.- make_
revolution_ band - Build the face of a revolution band: two closed rings joined by a synthesised seam, pcurves attached window-coherently.
- make_
shell - Build a shell from faces.
- make_
solid - Build a solid from shells.
- make_
vertex - Add a vertex at
point. - make_
wire - Build a wire from edges that meet end to end.
- placed_
edge_ curve - An edge occurrence’s curve where the occurrence stands, and the range of
it the edge covers;
Nonefor an edge with no curve in space. - rings_
are_ parallels - Whether two closed ring edges are parallels of
surface, so thatmake_revolution_bandcan build a band between them. A reader asks this first: a periodic face bounded by two closed circles that are not parallels (a button head’s rims, square to the screw on a sphere whose chart runs along z) is a legitimate face on its own bounds, not a band missing its seam, and deserves no warning. - split_
ring_ on_ column - Split a closed circle rim of a revolution band where it crosses the
column of
anchor, the vertex of the band’s other rim, so both rims have a vertex on one column and a seam can join them. - surface_
iso_ u_ curve - The surface’s
u = atiso-curve, parameterized byvexactly. - trimmed_
or_ fitted_ where_ bare - As
trimmed_where_bare, with every edge left without a closed form given a pcurve fitted by projection at the curve’s own parameters: a face kept whole in a solid (a sweep’s end) is only valid with a trim on every edge. - trimmed_
where_ bare - Give every edge of
facethat has no trim on the face’s surface its exact one, where a closed form exists: a profile built from bare curves becomes a face a sweep can keep as an end.