Another project
1pub mod aabb;
2mod angles;
3pub mod arc2;
4pub mod arc3;
5pub mod brep;
6pub mod circle2;
7pub mod circle3;
8mod circular3;
9pub mod closest;
10pub mod curvature;
11pub mod curve2;
12pub mod curve3;
13pub mod cylinder_surface;
14pub mod extrude;
15pub mod intersect;
16pub mod intersect3;
17pub mod line2;
18pub mod line3;
19pub mod mesh;
20pub mod plane_surface;
21pub mod polyline3;
22pub mod surface3;
23
24pub use aabb::Aabb2;
25pub use arc2::{Arc2, arc_bounding_box};
26pub use arc3::Arc3;
27pub use brep::eval::evaluate_extrude;
28pub use brep::profile::{ExtrudeProfile, ProfileEdge, ProfileLoop};
29pub use brep::{
30 BrepEdge, BrepError, BrepFace, BrepLoop, BrepShell, BrepSolid, BrepVertex, LabelKind,
31 ProfileDefect, TruckGap,
32};
33pub use circle2::Circle2;
34pub use circle3::Circle3;
35pub use closest::{ClosestPoint, ClosestPoint2, ClosestPoint3};
36pub use curvature::Curvature;
37pub use curve2::{Curve2, Curve2Kind};
38pub use curve3::{Curve3, Curve3Kind};
39pub use cylinder_surface::CylinderSurface;
40pub use extrude::{
41 DraftAngle, DraftDirection, DraftMagnitude, ExtrudeDirection, ExtrudeEndCondition,
42 ExtrudeFeature, ExtrudeSense, MergeResult, PlaneRef, ThinWall, ThinWallDirection,
43};
44pub use intersect::{IntersectionSet, IntersectionSet2, intersect_curves};
45pub use intersect3::{IntersectionSet3, intersect_curves_3};
46pub use line2::Line2;
47pub use line3::Line3;
48pub use mesh::{MeshVertex, TriMesh};
49pub use plane_surface::PlaneSurface;
50pub use polyline3::Polyline3;
51pub use surface3::Surface3;
52
53#[derive(Debug, thiserror::Error)]
54pub enum KernelError {
55 #[error("line endpoints coincide within tolerance")]
56 DegenerateLine,
57 #[error("arc sweep is within tolerance of zero or exceeds 2π")]
58 DegenerateArc,
59 #[error("circle radius is within tolerance of zero")]
60 DegenerateCircle,
61 #[error("polyline needs at least two vertices and no zero-length segment")]
62 DegeneratePolyline,
63 #[error("plane surface extent is within tolerance of zero")]
64 DegeneratePlane,
65 #[error("cylinder surface radius, height, or sweep is degenerate")]
66 DegenerateCylinder,
67 #[error("draft angle must be within [0, 90) degrees: {0} deg")]
68 DraftAngleOutOfRange(f64),
69}
70
71pub type Result<T, E = KernelError> = core::result::Result<T, E>;