KCL: Track Z axis of planes

KCL should track which way a plane is facing. If it only tracks a plane's
X and Y axes, it could identify two separate planes (overlapping
perfectly in space, but one plane's "up" is the other's down).

This is helpful for knowing which way to extrude on a given plane, or
which way to cut "into" a given solid.
This commit is contained in:
Adam Chalmers
2025-07-03 11:22:50 -05:00
parent df6256266c
commit 61cae3026e
8 changed files with 94 additions and 35 deletions

View File

@ -49,38 +49,61 @@ lazy_static::lazy_static! {
pub static ref GRID_SCALE_TEXT_OBJECT_ID: uuid::Uuid = uuid::Uuid::parse_str("10782f33-f588-4668-8bcd-040502d26590").unwrap();
pub static ref DEFAULT_PLANE_INFO: IndexMap<PlaneName, PlaneInfo> = IndexMap::from([
(PlaneName::Xy,PlaneInfo{
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Unknown),
}),
(PlaneName::NegXy,
PlaneInfo{
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Unknown),
}),
(PlaneName::Xz, PlaneInfo{
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Unknown),
}),
(PlaneName::NegXz, PlaneInfo{
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Unknown),
}),
(PlaneName::Yz, PlaneInfo{
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Unknown),
}),
(PlaneName::NegYz, PlaneInfo{
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(0.0, -1.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Unknown),
}),
]);
(
PlaneName::Xy,
PlaneInfo {
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Unknown),
z_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Unknown),
},
),
(
PlaneName::NegXy,
PlaneInfo {
origin: Point3d::new( 0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new( 0.0, 1.0, 0.0, UnitLen::Unknown),
z_axis: Point3d::new( 0.0, 0.0, -1.0, UnitLen::Unknown),
},
),
(
PlaneName::Xz,
PlaneInfo {
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Unknown),
z_axis: Point3d::new(1.0, 0.0, 0.0, UnitLen::Unknown),
},
),
(
PlaneName::NegXz,
PlaneInfo {
origin: Point3d::new( 0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new( 0.0, 0.0, 1.0, UnitLen::Unknown),
z_axis: Point3d::new(-1.0, 0.0, 0.0, UnitLen::Unknown),
},
),
(
PlaneName::Yz,
PlaneInfo {
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Unknown),
z_axis: Point3d::new(0.0, 1.0, 0.0, UnitLen::Unknown),
},
),
(
PlaneName::NegYz,
PlaneInfo {
origin: Point3d::new(0.0, 0.0, 0.0, UnitLen::Mm),
x_axis: Point3d::new(0.0, -1.0, 0.0, UnitLen::Unknown),
y_axis: Point3d::new(0.0, 0.0, 1.0, UnitLen::Unknown),
z_axis: Point3d::new(0.0, -1.0, 0.0, UnitLen::Unknown),
},
),
]);
}
#[derive(Default, Debug)]