Skip to main content

u_nesting_cutting/
lib.rs

1//! Cutting path optimization for 2D nesting results.
2//!
3//! Given a nesting solve result (placed parts with positions and rotations),
4//! this module computes an optimized cutting path that minimizes:
5//! - Non-cutting (rapid) travel distance
6//! - Number of pierce points
7//! - Heat accumulation (optional)
8//!
9//! # Algorithm
10//!
11//! 1. **Contour extraction**: Extract cut contours from placed geometries
12//! 2. **Hierarchy construction**: Build a DAG of precedence constraints
13//!    (holes before exteriors, inner parts before outer parts)
14//! 3. **Pierce point selection**: Choose optimal entry points on each contour
15//! 4. **Sequence optimization**: TSP-based ordering with precedence constraints
16//!    (Nearest Neighbor + constrained 2-opt)
17//! 5. **Path assembly**: Combine into final cutting path with rapid moves
18//!
19//! # References
20//!
21//! - Dewil et al. (2016), "A review of cutting path algorithms for laser cutters"
22//! - Hu, Lin & Fu (2023), "Optimizing Cutting Sequences for Common-Edge Nested Parts"
23
24pub mod bridge;
25pub mod common_edge;
26pub mod config;
27pub mod contour;
28pub mod cost;
29pub mod gtsp;
30pub mod hierarchy;
31pub mod kerf;
32pub mod leadin;
33pub mod path;
34pub mod pierce;
35pub mod result;
36pub mod sequence;
37pub mod thermal;
38
39pub use config::CuttingConfig;
40pub use contour::ContourType;
41pub use path::optimize_cutting_path;
42pub use result::{CutDirection, CutStep, CuttingPathResult};