kcl_lib/std/
axis_or_reference.rs1use super::args::TyF64;
4use crate::{
5 execution::{Plane, Sketch, Solid, TagIdentifier},
6 std::{fillet::EdgeReference, sketch::FaceTag},
7};
8
9#[derive(Debug, Clone, PartialEq)]
11pub enum Axis2dOrEdgeReference {
12 Axis { direction: [TyF64; 2], origin: [TyF64; 2] },
14 Edge(EdgeReference),
16}
17
18#[allow(clippy::large_enum_variant)]
20#[derive(Debug, Clone, PartialEq)]
21pub enum Axis3dOrEdgeReference {
22 Axis { direction: [TyF64; 3], origin: [TyF64; 3] },
24 Edge(EdgeReference),
26}
27
28#[derive(Debug, Clone, PartialEq)]
30pub enum Axis2dOrPoint2d {
31 Axis { direction: [TyF64; 2], origin: [TyF64; 2] },
33 Point([TyF64; 2]),
35}
36
37impl Axis2dOrPoint2d {
38 pub fn to_point2d(&self) -> [TyF64; 2] {
40 match self {
41 Axis2dOrPoint2d::Axis { direction, origin: _ } => direction.clone(),
42 Axis2dOrPoint2d::Point(point) => point.clone(),
43 }
44 }
45}
46
47#[derive(Debug, Clone, PartialEq)]
49pub enum Axis3dOrPoint3d {
50 Axis { direction: [TyF64; 3], origin: [TyF64; 3] },
52 Point([TyF64; 3]),
54}
55
56impl Axis3dOrPoint3d {
57 pub fn to_point3d(&self) -> [TyF64; 3] {
59 match self {
60 Axis3dOrPoint3d::Axis { direction, origin: _ } => direction.clone(),
61 Axis3dOrPoint3d::Point(point) => point.clone(),
62 }
63 }
64
65 pub fn axis_origin(&self) -> Option<[TyF64; 3]> {
66 match self {
67 Axis3dOrPoint3d::Axis { origin, .. } => Some(origin.clone()),
68 Axis3dOrPoint3d::Point(..) => None,
69 }
70 }
71}
72
73#[allow(clippy::large_enum_variant)]
75#[derive(Debug, Clone, PartialEq)]
76pub enum Point3dAxis3dOrGeometryReference {
77 Point([TyF64; 3]),
79 Axis { direction: [TyF64; 3], origin: [TyF64; 3] },
81 Plane(Box<Plane>),
83 Edge(EdgeReference),
85 Face(FaceTag),
87 Sketch(Box<Sketch>),
89 Solid(Box<Solid>),
91 TaggedEdgeOrFace(TagIdentifier),
93}