kcl_lib/std/
axis_or_reference.rs1use super::args::TyF64;
4use crate::std::fillet::EdgeReference;
5
6#[derive(Debug, Clone, PartialEq)]
8pub enum Axis2dOrEdgeReference {
9 Axis { direction: [TyF64; 2], origin: [TyF64; 2] },
11 Edge(EdgeReference),
13}
14
15#[allow(clippy::large_enum_variant)]
17#[derive(Debug, Clone, PartialEq)]
18pub enum Axis3dOrEdgeReference {
19 Axis { direction: [TyF64; 3], origin: [TyF64; 3] },
21 Edge(EdgeReference),
23}
24
25#[derive(Debug, Clone, PartialEq)]
27pub enum Axis2dOrPoint2d {
28 Axis { direction: [TyF64; 2], origin: [TyF64; 2] },
30 Point([TyF64; 2]),
32}
33
34impl Axis2dOrPoint2d {
35 pub fn to_point2d(&self) -> [TyF64; 2] {
37 match self {
38 Axis2dOrPoint2d::Axis { direction, origin: _ } => direction.clone(),
39 Axis2dOrPoint2d::Point(point) => point.clone(),
40 }
41 }
42}
43
44#[derive(Debug, Clone, PartialEq)]
46pub enum Axis3dOrPoint3d {
47 Axis { direction: [TyF64; 3], origin: [TyF64; 3] },
49 Point([TyF64; 3]),
51}
52
53impl Axis3dOrPoint3d {
54 pub fn to_point3d(&self) -> [TyF64; 3] {
56 match self {
57 Axis3dOrPoint3d::Axis { direction, origin: _ } => direction.clone(),
58 Axis3dOrPoint3d::Point(point) => point.clone(),
59 }
60 }
61
62 pub fn axis_origin(&self) -> Option<[TyF64; 3]> {
63 match self {
64 Axis3dOrPoint3d::Axis { origin, .. } => Some(origin.clone()),
65 Axis3dOrPoint3d::Point(..) => None,
66 }
67 }
68}