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 surface_relation;
20mod validation;
21pub mod value;
22
23pub use axiolid_core::BooleanOperator;
24pub use curve_relation::{
25    CurveRelation, CurveSegment, MasterRepresentation, SurfaceSides, Transition, TrimSelector,
26    TrimmingPreference,
27};
28pub use graph::{GeometryGraph, GeometryGraphBuilder, GraphError};
29pub use id::NodeId;
30pub use node::{GeometryNode, Instance, OpenProfile, PointOnCurve, PointOnSurface};
31pub use solid_operation::{Section, SolidOperation};
32pub use surface_relation::SurfaceRelation;
33pub use value::BuiltInNode;