1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
use crate::{each_cmd::*, output as out, ModelingCmd, ModelingCmdVariant};

macro_rules! impl_variant_output {
    ($struct:ident) => {
        impl ModelingCmdVariant for $struct {
            type Output = out::$struct;
            fn into_enum(self) -> ModelingCmd {
                ModelingCmd::$struct(self)
            }
            fn name() -> &'static str {
                stringify!($struct)
            }
        }
    };
}

macro_rules! impl_variant_empty {
    ($struct:ident) => {
        impl ModelingCmdVariant for $struct {
            type Output = ();
            fn into_enum(self) -> ModelingCmd {
                ModelingCmd::$struct(self)
            }
            fn name() -> &'static str {
                stringify!($struct)
            }
        }
    };
}

impl_variant_empty!(StartPath);
impl_variant_empty!(MovePathPen);
impl_variant_empty!(ExtendPath);
impl_variant_empty!(Extrude);
impl_variant_empty!(ClosePath);
impl_variant_empty!(CameraDragStart);
impl_variant_empty!(CameraDragMove);
impl_variant_empty!(CameraDragEnd);
impl_variant_empty!(EnableSketchMode);
impl_variant_empty!(DefaultCameraLookAt);
impl_variant_empty!(DefaultCameraPerspectiveSettings);
impl_variant_empty!(DefaultCameraZoom);
impl_variant_empty!(DefaultCameraEnableSketchMode);
impl_variant_empty!(DefaultCameraDisableSketchMode);
impl_variant_empty!(DefaultCameraFocusOn);
impl_variant_output!(Export);
impl_variant_output!(EntityGetParentId);
impl_variant_output!(EntityGetNumChildren);
impl_variant_output!(EntityGetChildUuid);
impl_variant_output!(EntityGetAllChildUuids);
impl_variant_output!(EntityGetDistance);
impl_variant_output!(EntityLinearPattern);
impl_variant_output!(EntityCircularPattern);
impl_variant_empty!(EditModeEnter);
impl_variant_output!(SelectWithPoint);
impl_variant_empty!(SelectAdd);
impl_variant_empty!(SelectRemove);
impl_variant_empty!(SelectReplace);
impl_variant_output!(HighlightSetEntity);
impl_variant_empty!(HighlightSetEntities);
impl_variant_empty!(NewAnnotation);
impl_variant_empty!(UpdateAnnotation);
impl_variant_empty!(ObjectVisible);
impl_variant_empty!(ObjectBringToFront);
impl_variant_output!(GetEntityType);
impl_variant_empty!(Solid2dAddHole);
impl_variant_output!(Solid3dGetAllEdgeFaces);
impl_variant_output!(Solid3dGetAllOppositeEdges);
impl_variant_output!(Solid3dGetOppositeEdge);
impl_variant_output!(Solid3dGetNextAdjacentEdge);
impl_variant_output!(Solid3dGetPrevAdjacentEdge);
impl_variant_empty!(Solid3dFilletEdge);
impl_variant_empty!(SendObject);
impl_variant_empty!(ObjectSetMaterialParamsPbr);
impl_variant_empty!(EntitySetOpacity);
impl_variant_empty!(EntityFade);
impl_variant_empty!(MakePlane);
impl_variant_empty!(PlaneSetColor);
impl_variant_empty!(SetTool);
impl_variant_empty!(MouseMove);
impl_variant_output!(MouseClick);
impl_variant_empty!(SketchModeEnable);
impl_variant_empty!(SketchModeDisable);
impl_variant_output!(CurveGetType);
impl_variant_output!(CurveGetControlPoints);
impl_variant_output!(TakeSnapshot);
impl_variant_empty!(MakeAxesGizmo);
impl_variant_output!(PathGetInfo);
impl_variant_output!(PathGetCurveUuidsForVertices);
impl_variant_output!(PathGetVertexUuids);
impl_variant_empty!(HandleMouseDragStart);
impl_variant_empty!(HandleMouseDragMove);
impl_variant_empty!(HandleMouseDragEnd);
impl_variant_empty!(RemoveSceneObjects);
impl_variant_empty!(CurveSetConstraint);
impl_variant_empty!(ReconfigureStream);
impl_variant_output!(PlaneIntersectAndProject);
impl_variant_output!(CurveGetEndPoints);
impl_variant_output!(ImportFiles);
impl_variant_output!(Mass);
impl_variant_output!(Volume);
impl_variant_output!(Density);
impl_variant_output!(SurfaceArea);
impl_variant_output!(CenterOfMass);
impl_variant_output!(GetSketchModePlane);
impl_variant_empty!(SetSelectionFilter);
impl_variant_empty!(SetSelectionType);
impl_variant_empty!(DefaultCameraSetOrthographic);
impl_variant_empty!(DefaultCameraSetPerspective);
impl_variant_output!(Solid3dGetExtrusionFaceInfo);