feat: plinegen + SAB parsing for Solid3D/Region/Body

LwPolyline PLINEGEN=0 (DXF default): emit SegmentedLines with NaN
separators between vertex-to-vertex segments; wire_gpu resets
arc-length to 0 after each NaN so linetype pattern restarts per vertex.
PLINEGEN=1: existing Contour path unchanged (continuous pattern).
WireModel gains plinegen field propagated through tessellate pipeline.

Solid3D/Region/Body: call SabReader::read() when parse_sat() returns
None due to binary SAB format (DWG files / newer AutoCAD exports).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Sonnet 4.6 committed 2026-05-06 06:55:28 +03:00
1 parent 63b17547f9
commit 27aca41dd1
39 files changed
+168 -15

No files matched your search

+2
View File
@@ -102,6 +102,7 @@ impl CadCommand for AlignedDimensionCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
@@ -136,5 +137,6 @@ fn preview_aligned(p1: Vec3, p2: Vec3, dim_pt: Vec3) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -125,6 +125,7 @@ fn preview_wire(points: Vec<Vec3>) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -101,5 +101,6 @@ fn preview_line(a: Vec3, b: Vec3) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -143,6 +143,7 @@ impl CadCommand for DimBaselineCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -140,6 +140,7 @@ impl CadCommand for DimContinueCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -94,6 +94,7 @@ impl CadCommand for DimJogLineCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -102,6 +102,7 @@ impl CadCommand for DimTeditCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
+1
View File
@@ -202,6 +202,7 @@ fn preview_wire(pts: &[Vec3]) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -113,6 +113,7 @@ fn preview_wire(points: Vec<Vec3>) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -155,6 +155,7 @@ fn preview_wire(pts: &[Vec3]) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -366,6 +366,7 @@ fn preview_wire(pts: &[Vec3]) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -99,6 +99,7 @@ impl CadCommand for QdimCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -112,5 +112,6 @@ fn preview_wire(points: Vec<Vec3>) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -145,6 +145,7 @@ impl CadCommand for TableCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
} else {
None
+1
View File
@@ -98,6 +98,7 @@ impl CadCommand for ToleranceCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}