Expand description
The boundary-representation data model. What this model can express is what
the kernel can do, so its invariants are normative; see docs/DATA_MODEL.md.
Elsewhere: TopoDS, TopAbs, TopExp, TopTools, TopLoc and BRep.
Non-negotiable invariants:
- A shape is a (TShape, Location, Orientation) triple: a positionless, orientationless shared topology node plus a placement plus an orientation. Cheap to copy; the heavy data lives once in an arena.
- Location is a chain of
(datum, power)pairs, not a flat 4x4. Composition is list concatenation and the composed transform is computed lazily. This is what lets an assembly of 10,000 identical bolts share one piece of geometry, and what keeps identical-instance detection a cheap chain comparison. - Orientation composes multiplicatively down the tree. An edge’s effective orientation inside a face depends on that face’s orientation inside its shell.
- Identity is a trichotomy: same (tshape + location), equal (+ orientation), partner (tshape only), each with a consistent hasher. Conflating these is a classic source of silent bugs.
- Tolerances are per-entity, with
tol(vertex) >= tol(edge) >= tol(face), and they grow through operations. This is the kernel’s answer to inexact arithmetic; every production kernel works this way. - An edge carries a list of representations, not one curve: a 3D curve, one
pcurve per adjacent face, two pcurves for a seam edge on a closed surface, plus
polygon and triangulation representations, with a
same_parameterflag and a repair routine.
Re-exports§
pub use entity::CurveId;pub use entity::EdgeData;pub use entity::EdgeRepr;pub use entity::FaceData;pub use entity::GeometryStore;pub use entity::NodeData;pub use entity::PCurveId;pub use entity::SurfaceId;pub use entity::TriangulationId;pub use entity::VertexData;pub use entity::check_containment;pub use entity::enforce_containment;pub use location::Datum;pub use location::DatumId;pub use location::DatumStore;pub use location::Location;pub use model::Absorbed;pub use model::Filter;pub use model::Model;pub use model::ModelParts;pub use model::ancestors_of;pub use model::explore;pub use model::explore_unique;pub use shape::Orientation;pub use shape::PartnerKey;pub use shape::SameKey;pub use shape::Shape;pub use shape::ShapeType;pub use shape::TShape;pub use shape::TShapeId;pub use tessellation::Triangulation;
Modules§
- entity
- What hangs off a topology node: geometry, tolerances, edge representations.
- location
- Placement as a chain of transforms.
- model
- The model: the arenas a shape’s handles refer into, and the builder that is the only way to mutate them.
- shape
- The shape triple, orientation, and the identity trichotomy.
- tessellation
- Cached tessellation: the polyline and triangle forms of exact geometry.