lib3mf_core/model/
slice.rs1use crate::model::ResourceId;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Default, Serialize, Deserialize)]
6pub struct SliceStack {
7 pub id: ResourceId,
8 #[serde(default)]
9 pub z_bottom: f32,
10 pub slices: Vec<Slice>,
11 pub refs: Vec<SliceRef>,
12}
13
14#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct Slice {
16 pub z_top: f32,
17 pub vertices: Vec<Vertex2D>,
18 pub polygons: Vec<Polygon>,
19}
20
21#[derive(Debug, Clone, Copy, Default, Serialize, Deserialize)]
22pub struct Vertex2D {
23 pub x: f32,
24 pub y: f32,
25}
26
27#[derive(Debug, Clone, Default, Serialize, Deserialize)]
28pub struct Polygon {
29 pub start_segment: u32,
31 pub segments: Vec<Segment>,
32}
33
34#[derive(Debug, Clone, Default, Serialize, Deserialize)]
35pub struct Segment {
36 pub v2: u32,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub p1: Option<u32>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub p2: Option<u32>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub pid: Option<ResourceId>,
44}
45
46#[derive(Debug, Clone, Default, Serialize, Deserialize)]
47pub struct SliceRef {
48 pub slice_stack_id: ResourceId,
49 pub slice_path: String,
50}