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 <[email protected]>
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

+1
View File
@@ -134,6 +134,7 @@ impl CadCommand for AttdefCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -527,5 +527,6 @@ fn line_wire(from: Vec3, to: Vec3) -> WireModel {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
}
}
+1
View File
@@ -88,6 +88,7 @@ impl CadCommand for LineCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -113,6 +113,7 @@ impl CadCommand for MlineCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -112,6 +112,7 @@ impl CadCommand for ImageCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+2
View File
@@ -86,6 +86,7 @@ impl CadCommand for RayCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
@@ -164,6 +165,7 @@ impl CadCommand for XLineCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -83,6 +83,7 @@ impl CadCommand for RevCloudCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+2
View File
@@ -119,6 +119,7 @@ impl CadCommand for WipeoutCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
WipeoutMode::Polygonal => {
@@ -140,6 +141,7 @@ impl CadCommand for WipeoutCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -76,6 +76,7 @@ impl CadCommand for AreaCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -71,6 +71,7 @@ impl CadCommand for DistCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
}
+1
View File
@@ -134,6 +134,7 @@ impl CadCommand for StretchCommand {
aci: 0,
key_vertices: vec![],
aabb: WireModel::UNBOUNDED_AABB,
plinegen: true,
})
}
_ => None,