forked from 1b-agent/opencadstudio-upstream
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 <noreply@anthropic.com>
This commit is contained in:
1 parent
313a0eacfd
commit
e78e137664
3 files changed
+69
-1
No files matched your search
@@ -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(),
|
||||
|
||||
Reference in new issue
Block a user