Skip to main content

Crate ogeom_algo

Crate ogeom_algo 

Source
Expand description

Shape construction and query: everything that does not require surface/surface intersection.

Elsewhere: the BRepBuilderAPI, BRepPrimAPI, BRepTools, BRepLib, BRepGProp, BRepCheck, BRepClass3d, BRepExtrema, GeomAPI, GCPnts and GProp families, plus the classical curve constructors. The adaptor layer is ogeom-geom’s: evaluating topology as geometry belongs with the geometry traits (docs/PARITY.md, geom.adaptors).

Every operation in this crate emits history (generated / modified / is_deleted) from the start. That is not optional and cannot be retrofitted: downstream stable naming is built directly on it.

Re-exports§

pub use build::attach_pcurve;
pub use build::attach_seam;
pub use build::chain_wire_branches;
pub use build::edge_vertices;
pub use build::find_plane;
pub use build::is_shell_closed;
pub use build::is_wire_closed;
pub use build::make_apex_band;
pub use build::make_band_between;
pub use build::make_compound;
pub use build::make_compsolid;
pub use build::make_edge;
pub use build::make_edge_between;
pub use build::make_face;
pub use build::make_face_on;
pub use build::make_face_with_pcurves;
pub use build::make_natural_face;
pub use build::make_polygon;
pub use build::make_revolution_band;
pub use build::make_shell;
pub use build::make_solid;
pub use build::make_vertex;
pub use build::make_wire;
pub use build::rings_are_parallels;
pub use build::surface_iso_u_curve;
pub use check::Diagnosis;
pub use check::Problem;
pub use check::Severity;
pub use check::check;
pub use check::check_self_intersection;
pub use check::check_tessellation;
pub use check::restore_containment;
pub use classify::Containment;
pub use classify::SolidBoundary;
pub use classify::classify_in_solid;
pub use classify::classify_in_solid_exact;
pub use classify::classify_in_solid_exact_banded;
pub use classify::classify_on_face;
pub use convert::CurveRestatement;
pub use convert::SurfaceRestatement;
pub use convert::baked_shape;
pub use convert::general_transformed_shape;
pub use convert::normals_oppose;
pub use convert::restate_geometry;
pub use convert::to_nurbs;
pub use convert::to_nurbs_within;
pub use fit::Spacing;
pub use fit::approximate;
pub use fit::approximate_within;
pub use fit::interpolate;
pub use history::Built;
pub use history::History;
pub use length::curve_length;
pub use length::parameter_at_length;
pub use length::points_by_count;
pub use length::points_by_spacing;
pub use mass::MassProperties;
pub use mass::linear_properties;
pub use mass::surface_properties;
pub use mass::volume_properties;
pub use measure::Obb;
pub use measure::Projection;
pub use measure::SurfaceProjection;
pub use measure::SurfaceSeeds;
pub use measure::curve_bounds;
pub use measure::face_normal;
pub use measure::oriented_bounds;
pub use measure::project_on_curve;
pub use measure::project_on_planar_curve;
pub use measure::project_on_surface;
pub use measure::project_on_surface_from;
pub use measure::relative_deflection;
pub use measure::shape_bounds;
pub use measure::surface_bounds;
pub use measure::vertex_bounds;
pub use measure::widened_to_hold;
pub use medial::MedialAxis;
pub use medial::medial_axis;
pub use medial_graph::MedialBranch;
pub use medial_graph::MedialGraph;
pub use medial_graph::MedialSite;
pub use medial_graph::MedialVertex;
pub use medial_graph::medial_graph;
pub use mesh_solid::MeshSolid;
pub use mesh_solid::MeshSolidOptions;
pub use mesh_solid::MeshSolidReport;
pub use mesh_solid::solid_from_mesh;
pub use place::copied;
pub use place::transformed;
pub use primitive::make_box;
pub use primitive::make_cone;
pub use primitive::make_cylinder;
pub use primitive::make_half_space;
pub use primitive::make_hexahedron;
pub use primitive::make_parallelepiped;
pub use primitive::make_polyhedron;
pub use primitive::make_sphere;
pub use primitive::make_torus;
pub use primitive::make_wedge;
pub use project_plane::ProjectedCurve;
pub use project_plane::project_edge_onto_plane;
pub use proximity::ClosestPair;
pub use proximity::ShapeDistance;
pub use proximity::distance_between_shapes;
pub use recognize::Canonical;
pub use recognize::Recognized;
pub use recognize::recognize_points;
pub use sew::Sewn;
pub use sew::make_wire_unordered;
pub use sew::order_edges;
pub use sew::sew;
pub use sweep::make_prism;
pub use sweep::make_prism_tapered;
pub use sweep::make_revolution;
pub use text::make_text;
pub use tight::tight_bounds;

Modules§

build
Building topology from geometry.
check
Checking a shape against the model’s invariants.
classify
Where a point sits relative to a shape.
convert
Whole-shape conversion: everything as NURBS, and general affine transforms over a shape.
fit
Fitting a B-spline to points.
history
What an operation did to its inputs.
length
Arc length, and distributing points along a curve by it.
mass
Mass properties: how much there is, where its centre is, and how it resists being spun.
measure
Bounding volumes and projection.
medial
The medial axis of a planar region: the locus of centres of maximal inscribed circles: what tool-path generation and midline extraction are built on.
medial_graph
The medial axis of any planar face: holes, reflex corners and curved boundaries included, each branch its exact bisector.
mesh_solid
A B-rep solid from a triangle mesh.
pcurve_fit
Pcurves fitted by projection, for faces whose trims have no closed form.
place
Placing and duplicating shapes.
primitive
Primitive solids.
project_plane
An edge projected orthogonally onto a plane, as an exact curve in the plane’s own coordinates.
proximity
Minimum distance between shapes.
recognize
Canonical recognition: deciding that a set of points is a plane, a cylinder, a cone, a sphere or a torus, not that it resembles one.
sew
Joining loose topology: ordering a bag of edges into a wire, and sewing free faces into a shell.
sweep
Sweeping: dragging a shape through space to make one of higher dimension.
text
Text to wires: a built-in single-stroke engraving font.
tight
The smallest axis-aligned box that holds a shape: how big a body is.