fix(paper): keep model 3D solids off the paper-space sheet

The paper layout sheet pass reused the full model mesh set, so every
top-level 3D solid piled onto the paper origin — the sheet camera works
in paper coordinates, not model space. Guard `meshes` on
`inst.paper_sheet` the same way wires/hatches/images already are: the
sheet shows only paper-native content; the model's solids render inside
the floating content viewports (model camera + per-viewport scissor).

Also name 3DSOLID/REGION/BODY/SURFACE/MESH/SOLID/MULTILEADER in dxf_name
(they fell through to "ENTITY"), and add a SELHANDLES diagnostic that
reports the active space plus a per-type / per-block selection breakdown.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 4.8 committed 2026-07-03 23:29:18 +03:00
1 parent 313a0eacfd
commit e78e137664
3 files changed
+69 -1

No files matched your search

+13 -1
View File
@@ -957,6 +957,18 @@ impl Scene {
} else {
self.images_arc()
};
// The paper sheet shows the layout's own 2-D content (fills, borders,
// annotation) — never the model's 3-D solids. Those are drawn inside
// the floating content viewports, whose model camera + per-viewport
// scissor place and clip them correctly. Feeding the model mesh set to
// the sheet piles every solid onto the paper origin, because the sheet
// camera works in paper coordinates, not model space — the same reason
// the sheet excludes model hatches and wires above.
let meshes = if inst.paper_sheet {
Arc::new(Vec::new())
} else {
self.meshes_arc()
};
Some(ViewportData {
wires: all_wires,
@@ -966,7 +978,7 @@ impl Scene {
hatches,
wipeout_hatches,
images,
meshes: self.meshes_arc(),
meshes,
uniforms,
cam_rotation: inst.camera.view_rotation_mat() * self.viewcube_ucs_mat(),
compass_rotation: inst.camera.view_rotation_mat(),