kittycad_modeling_cmds/format/
ply.rs1use parse_display::{Display, FromStr};
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5use crate::{coord, format::Selection, units::UnitLength};
6
7pub mod import {
9 use super::*;
10
11 #[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize, JsonSchema, Display, FromStr)]
13 #[display("coords: {coords}, units: {units}")]
14 #[serde(rename = "PlyImportOptions")]
15 #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
16 #[cfg_attr(feature = "ts-rs", ts(export_to = "ModelingCmd.ts"))]
17 pub struct Options {
18 pub coords: coord::System,
24
25 pub units: UnitLength,
32 }
33
34 impl Default for Options {
35 fn default() -> Self {
36 Self {
37 coords: *coord::KITTYCAD,
38 units: UnitLength::Millimeters,
39 }
40 }
41 }
42}
43
44pub mod export {
46
47 use super::*;
48
49 #[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize, JsonSchema, Display, FromStr)]
51 #[display("coords: {coords}, selection: {selection}, storage: {storage}, units: {units}")]
52 #[serde(rename = "PlyExportOptions")]
53 #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
54 #[cfg_attr(feature = "ts-rs", ts(export_to = "ModelingCmd.ts"))]
55 pub struct Options {
56 pub coords: coord::System,
62
63 pub selection: Selection,
65
66 pub storage: Storage,
68
69 pub units: UnitLength,
73 }
74
75 impl Default for Options {
76 fn default() -> Self {
77 Self {
78 coords: *coord::KITTYCAD,
79 selection: Default::default(),
80 storage: Default::default(),
81 units: UnitLength::Millimeters,
82 }
83 }
84 }
85
86 #[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize, JsonSchema, Display, FromStr, Default)]
88 #[display(style = "snake_case")]
89 #[serde(rename = "PlyStorage", rename_all = "snake_case")]
90 #[cfg_attr(feature = "ts-rs", derive(ts_rs::TS))]
91 #[cfg_attr(feature = "ts-rs", ts(export_to = "ModelingCmd.ts"))]
92 pub enum Storage {
93 #[default]
95 Ascii,
96 BinaryLittleEndian,
98 BinaryBigEndian,
100 }
101}