Skip to main content

Module build

Module build 

Source
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.
chain_wire_branches
Put a face’s wires on one branch of a periodic chart.
edge_vertices
The vertices an edge runs between, in the direction it is traversed.
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_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 by wires.
make_face_on
Build a face on a surface the model already holds.
make_face_with_pcurves
Build a face on surface from 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_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.
rings_are_parallels
Whether two closed ring edges are parallels of surface, so that make_revolution_band can 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.
surface_iso_u_curve
The surface’s u = at iso-curve, parameterized by v exactly.
trimmed_where_bare
Give every edge of face that 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.