Sheet sets: Place on Sheet, sheet view menus, block lists, missing status, field refresh

Model Views lists named model views and places them on the current sheet
(xref, viewport, paper-space named view, view label with navigation
fields, sheet view record); sheet view rows get Display, Rename & Renumber
View, Set category, Place Callout Block and Place View Label Block; the
View Category dialog's Add Blocks opens List of Blocks / Select Block; a
sheet whose relative path is gone shows missing; sheet set fields store
their values when a set changes; named views keep their centre relative to
the target. Codec pin moves to the revision with these field helpers.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
ramox81andClaude Opus 5.5 committed 2026-10-05 15:13:33 +03:00
1 parent 5c9f19a4dc
commit 0d0fbafaa8
31 files changed
+1370 -88

No files matched your search

+5 -5
View File
@@ -202,6 +202,9 @@ impl Scene {
};
// Build rotation: canonical eye is +Z, rotate to eye_dir.
cam.rotation = glam::Quat::from_rotation_arc(Vec3::Z, eye_dir);
// The view centre is an offset in view coordinates from the target.
let offset = cam.rotation * Vec3::new(view.center.x as f32, view.center.y as f32, 0.0);
cam.target += glam::DVec3::new(offset.x as f64, offset.y as f64, offset.z as f64);
// Sync yaw/pitch from new rotation (for ViewCube).
let pitch = eye_dir.z.clamp(-1.0, 1.0).asin();
let yaw = eye_dir.x.atan2(eye_dir.y);
@@ -226,11 +229,8 @@ impl Scene {
let height = cam.ortho_size() * 2.0;
let width = height; // caller can adjust; rough square
let mut view = codec::tables::View::new(name);
view.center = Vector3 {
x: cam.target.x as f64,
y: cam.target.y as f64,
z: 0.0,
};
// The centre is in view (DCS) coordinates, relative to the target.
view.center = Vector3 { x: 0.0, y: 0.0, z: 0.0 };
view.target = Vector3 {
x: cam.target.x as f64,
y: cam.target.y as f64,