geop_lib_booleans/lib.rs
1//! Boolean operations on solids.
2//!
3//! [`remesh`] imprints the two solids' boundaries onto each other (splitting
4//! edges at coincidences, tracing face x face intersection curves) so that
5//! [`boolean`] can classify and keep the right faces for union,
6//! intersection, or difference. Both work on a `geop_ops_model::NamedModel`,
7//! and `naming` describes the stable names they give to everything they
8//! create. [`split`] cuts a solid into pieces with a sheet, imprinting it the
9//! same way. [`imprint`] divides two bodies along where each crosses the
10//! other and keeps both; [`imprint_on_face`] divides one face along the
11//! curves where other bodies cross it. [`section`] makes those curves a
12//! wire. [`combine_tools`] combines the tools a step built as its
13//! `geop_ops_model::Combine` says: the whole of each, or only up to the next
14//! face of the solid it meets ([`boolean_up_to_next`], [`trim_up_to_next`]).
15//! `scenes` is test-scene scaffolding, built from basic shapes, shared by
16//! the modules' tests.
17
18mod boolean;
19mod combine;
20mod imprint;
21mod naming;
22#[cfg(test)]
23mod regression_tests;
24mod remesh;
25#[cfg(test)]
26mod render_test;
27#[cfg(test)]
28mod scenes;
29mod section;
30mod split;
31mod trim;
32
33pub use boolean::{Reach, boolean, boolean_up_to_next, faces_classified, piece_up_to_next};
34pub use combine::combine_tools;
35pub use imprint::{imprint, imprint_on_face};
36pub use remesh::{Origins, RemeshParams, remesh};
37pub use section::{section, section_by_plane};
38pub use split::split;
39pub use trim::trim_up_to_next;