Skip to main content

axiolid_model/
lib.rs

1#![forbid(unsafe_code)]
2
3//! Format-neutral geometry intermediate representation.
4//!
5//! Source adapters lower into an immutable [`GeometryGraph`]. Nodes preserve
6//! exact curve, surface, topology, instancing, and construction intent; kernels
7//! choose how to evaluate or tessellate them. Typed append-only handles replace
8//! recursive `Box` trees and make mapped-item/CSG cycles impossible.
9//!
10//! Source identifiers stay outside the graph: an adapter keeps its own map
11//! from source entities to [`NodeId`]s. The graph never lowers anything to a
12//! mesh; compilation lives in the execution tier.
13
14pub mod curve_relation;
15pub mod graph;
16pub mod id;
17pub mod node;
18pub mod solid_operation;
19pub mod station;
20pub mod surface_relation;
21mod validation;
22pub mod value;
23#[cfg(feature = "serde")]
24pub mod wire;
25
26pub use axiolid_core::BooleanOperator;
27pub use curve_relation::{
28    CurveRelation, CurveSegment, MasterRepresentation, SurfaceSides, Transition, TrimSelector,
29    TrimmingPreference,
30};
31pub use graph::{GeometryGraph, GeometryGraphBuilder, GraphError};
32pub use id::NodeId;
33pub use node::{GeometryNode, Instance, OpenProfile, PointOnCurve, PointOnSurface};
34pub use solid_operation::{Section, SolidOperation};
35pub use station::{
36    BasisEnd, CurveStation, InstanceAtStation, OrientedCurveStation, RunStation, SeamSide,
37    SectionAtStation, Station, StationFrame, StationOffsets, StationOrientation,
38    StationedOpenSection, StationedSection, ORIENTATION_TOLERANCE,
39};
40pub use surface_relation::{RuledSide, SurfaceRelation};
41pub use value::BuiltInNode;