Crate u_nesting_d3

Crate u_nesting_d3 

Source
Expand description

§U-Nesting 3D

3D bin packing algorithms for the U-Nesting spatial optimization engine.

This crate provides box-based 3D packing with collision detection and various placement algorithms.

§Features

  • Box geometry with 6-orientation support
  • Multiple placement strategies (Layer, GA, BRKGA, SA, Extreme Point)
  • Mass and stacking constraints
  • Configurable orientation constraints (Any, Upright, Fixed)
  • Spatial indexing for fast collision queries

§Quick Start

use u_nesting_d3::{Geometry3D, Boundary3D, Packer3D, Config, Strategy, Solver};
use u_nesting_d3::geometry::OrientationConstraint;

// Create boxes
let box1 = Geometry3D::new("box1", 100.0, 50.0, 30.0)
    .with_quantity(10)
    .with_orientation(OrientationConstraint::Upright);

// Create container
let container = Boundary3D::new(500.0, 400.0, 300.0);

// Configure and solve
let config = Config::new()
    .with_strategy(Strategy::ExtremePoint)
    .with_spacing(1.0);

let packer = Packer3D::new(config);
let result = packer.solve(&[box1], &container).unwrap();

println!("Placed {} boxes, utilization: {:.1}%",
    result.placements.len(),
    result.utilization * 100.0);

§Orientation Constraints

use u_nesting_d3::{Geometry3D, geometry::OrientationConstraint};

// Any orientation (6 rotations)
let any = Geometry3D::new("b1", 10.0, 20.0, 30.0)
    .with_orientation(OrientationConstraint::Any);

// Upright only (2 rotations, height preserved)
let upright = Geometry3D::new("b2", 10.0, 20.0, 30.0)
    .with_orientation(OrientationConstraint::Upright);

// Fixed (no rotation)
let fixed = Geometry3D::new("b3", 10.0, 20.0, 30.0)
    .with_orientation(OrientationConstraint::Fixed);

§Mass Constraints

use u_nesting_d3::{Geometry3D, Boundary3D};

let heavy_box = Geometry3D::new("heavy", 50.0, 50.0, 50.0)
    .with_mass(10.0)
    .with_quantity(5);

let container = Boundary3D::new(200.0, 200.0, 200.0)
    .with_max_mass(100.0);

Re-exports§

pub use boundary::Boundary3D;
pub use geometry::Geometry3D;
pub use packer::Packer3D;
pub use physics::PhysicsConfig;
pub use physics::PhysicsResult;
pub use physics::PhysicsSimulator;
pub use spatial_index::Aabb3D;
pub use spatial_index::SpatialEntry3D;
pub use spatial_index::SpatialIndex3D;
pub use stability::PlacedBox;
pub use stability::StabilityAnalyzer;
pub use stability::StabilityConstraint;
pub use stability::StabilityReport;
pub use stability::StabilityResult;

Modules§

boundary
3D boundary types.
brkga_packing
BRKGA-based 3D bin packing optimization.
extreme_point
Extreme Point heuristic for 3D bin packing.
ga_packing
Genetic Algorithm based 3D bin packing optimization.
geometry
3D geometry types.
packer
3D bin packing solver.
physics
Physics simulation for 3D bin packing validation and compaction.
sa_packing
Simulated Annealing-based 3D bin packing optimization.
spatial_index
Spatial indexing for 3D collision detection using AABB trees.
stability
Stability analysis for 3D bin packing.

Structs§

Config
Common configuration for solvers.
Placement
Represents the placement of a geometry within a boundary.
SolveResult
Result of a nesting or packing solve operation.

Enums§

Error
Errors that can occur during nesting/packing operations.
Strategy
Optimization strategy.

Traits§

Solver
Trait for nesting/packing solvers.

Type Aliases§

Result
Result type alias for U-Nesting operations.