runmat_meshing_core/contracts/
cad.rs1use serde::{Deserialize, Serialize};
2
3use super::{StageEvidence, TopologyEntityId};
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6pub struct CadModel {
7 pub model_id: String,
8 pub unit_scale_to_m: f64,
9 #[serde(default)]
10 pub vertices: Vec<CadVertexContract>,
11 #[serde(default)]
12 pub edges: Vec<CadEdgeContract>,
13 #[serde(default)]
14 pub faces: Vec<CadFaceContract>,
15 #[serde(default)]
16 pub shells: Vec<CadShellContract>,
17 #[serde(default)]
18 pub volumes: Vec<CadVolumeContract>,
19 pub evidence: StageEvidence,
20}
21
22#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
23pub struct CadVertexContract {
24 pub id: TopologyEntityId,
25 pub coordinates_m: [f64; 3],
26}
27
28#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
29pub struct CadEdgeContract {
30 pub id: TopologyEntityId,
31 pub vertex_ids: [TopologyEntityId; 2],
32 #[serde(default)]
33 pub adjacent_face_ids: Vec<TopologyEntityId>,
34 #[serde(default)]
35 pub imported_handle: Option<String>,
36 pub length_m: f64,
37}
38
39#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
40pub struct CadFaceContract {
41 pub id: TopologyEntityId,
42 #[serde(default)]
43 pub outer_loop_edge_ids: Vec<TopologyEntityId>,
44 #[serde(default)]
45 pub hole_loop_edge_ids: Vec<Vec<TopologyEntityId>>,
46 #[serde(default)]
47 pub region_ids: Vec<String>,
48 #[serde(default)]
49 pub imported_handle: Option<String>,
50 pub evaluator: CadEvaluatorCapabilities,
51}
52
53#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
54pub struct CadShellContract {
55 pub id: TopologyEntityId,
56 #[serde(default)]
57 pub face_ids: Vec<TopologyEntityId>,
58 pub closed: bool,
59}
60
61#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
62pub struct CadVolumeContract {
63 pub id: TopologyEntityId,
64 #[serde(default)]
65 pub shell_ids: Vec<TopologyEntityId>,
66 #[serde(default)]
67 pub material_region_ids: Vec<String>,
68}
69
70#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
71pub struct CadEvaluatorCapabilities {
72 pub point_evaluation: bool,
73 pub projection: bool,
74 pub normal: bool,
75 pub first_derivatives: bool,
76 pub second_derivatives: bool,
77 pub curvature: bool,
78}