pub fn optimize_cutting_path<G>(
solve_result: &SolveResult<f64>,
geometries: &[G],
config: &CuttingConfig,
) -> CuttingPathResultExpand description
Optimizes the cutting path for a nesting solve result.
This is the main entry point for cutting path optimization. It:
- Extracts contours from the placed geometries
- Builds precedence constraints (holes before exteriors)
- Optimizes the cutting sequence (NN + 2-opt)
- Selects optimal pierce points
- Assembles the final cutting path
§Arguments
solve_result- The nesting solve result with placementsgeometries- The original geometry definitionsconfig- Cutting path optimization parameters
§Returns
A CuttingPathResult with the optimized cutting sequence.
§Example
ⓘ
use u_nesting_cutting::{CuttingConfig, optimize_cutting_path};
use u_nesting::d2::{Geometry2D, Boundary2D, Nester2D};
use u_nesting::core::{Solver, Config};
let geometries = vec![Geometry2D::rectangle("R1", 10.0, 5.0).with_quantity(3)];
let boundary = Boundary2D::rectangle(100.0, 50.0);
let nester = Nester2D::new(Config::default());
let solve_result = nester.solve(&geometries, &boundary).unwrap();
let cutting_config = CuttingConfig::default();
let path = optimize_cutting_path(&solve_result, &geometries, &cutting_config);
println!("Rapid distance: {}", path.total_rapid_distance);