Merge pull request #1613 from ramox81/codex/sheet-set-manager

Sheet Set Manager, NEWSHEETSET / OPENSHEETSET and sheet set fields
This commit is contained in:
Hakan Seven committed 2026-10-06 09:17:20 +03:00
commit 078306d8fc
50 files changed
+8974 -27

No files matched your search

+5
View File
@@ -590,6 +590,10 @@ pub(super) fn on_ribbon_tool_click(&mut self, tool_id: String, event: ModuleEven
PanelId::PointCloudManager => {
self.pc_manager.show = false;
}
PanelId::SheetSetManager => {
self.sheet_set.show = false;
self.ribbon.set_sheet_set(false);
}
PanelId::Properties => {
self.show_properties = false;
self.ribbon.set_properties(false);
@@ -695,6 +699,7 @@ pub(super) fn on_ribbon_tool_click(&mut self, tool_id: String, event: ModuleEven
PanelId::Browser => self.show_browser,
PanelId::NodeGraph => self.show_node_graph,
PanelId::PointCloudManager => self.pc_manager.show,
PanelId::SheetSetManager => self.sheet_set.show,
}
}
+12 -7
View File
@@ -744,6 +744,7 @@ impl OpenCADStudio {
block_mru_list: self.block_mru_list,
block_redefine_mode: self.block_redefine_mode,
block_navigate: self.block_navigate.clone(),
sheet_set: self.sheet_set.settings,
}
}
@@ -875,6 +876,7 @@ impl OpenCADStudio {
self.block_mru_list = s.block_mru_list.min(100);
self.block_redefine_mode = s.block_redefine_mode.min(2);
self.block_navigate = s.block_navigate.clone();
self.sheet_set.settings = s.sheet_set;
self.block_palette.recent = s.block_recent.clone();
self.block_palette.favorites = s.block_favorites.clone();
self.block_palette.libraries = s.block_libraries.clone();
@@ -2045,7 +2047,8 @@ impl OpenCADStudio {
} else {
Task::none()
};
Task::batch([thumbs_task, pending_open_task, interaction_task, startup_script_task])
let sheet_set_task = self.sheet_set_after_open(i);
Task::batch([thumbs_task, pending_open_task, interaction_task, startup_script_task, sheet_set_task])
}
pub(super) fn on_wblock_save_result_some(
@@ -2150,6 +2153,7 @@ impl OpenCADStudio {
self.tabs[i].scene.document.header.user_real1 = self.tabs[i].scene.annotation_scale as f64;
self.sync_solid_models_for_save(i);
self.tabs[i].scene.sync_native_parametric_graph();
self.stamp_sheet_set_data(i);
}
#[cfg(not(target_arch = "wasm32"))]
@@ -3303,6 +3307,10 @@ impl OpenCADStudio {
for i in 0..self.tabs.len() {
let _ = std::fs::remove_file(self.autosave_target(i));
}
#[cfg(not(target_arch = "wasm32"))]
for path in &self.sheet_set.locks {
crate::app::commands::sheet_set::release_lock(path);
}
}
/// Remove the autosave recovery files, then quit the application.
@@ -5511,12 +5519,9 @@ impl OpenCADStudio {
let half_w = view.width.abs() * 0.5;
let half_h = view.height.abs() * 0.5;
(half_w > 1e-9 && half_h > 1e-9).then_some(())?;
self.area_plot_job((
view.center.x - half_w,
view.center.y - half_h,
view.center.x + half_w,
view.center.y + half_h,
))
// The view centre is relative to its target (plan views).
let (cx, cy) = (view.target.x + view.center.x, view.target.y + view.center.y);
self.area_plot_job((cx - half_w, cy - half_h, cx + half_w, cy + half_h))
}
pub(in crate::app) fn extents_plot_job(&self) -> Option<PdfPageInput> {
+5
View File
@@ -1819,6 +1819,7 @@ impl OpenCADStudio {
Message::AttdefDialog(message) => self.on_attdef_dialog(message),
Message::FieldDialog(message) => self.on_field_dialog(message),
Message::PcManager(message) => self.update_pc_manager(message),
Message::SheetSet(message) => self.on_sheet_set(message),
Message::RibbonSelectTab(idx) => {
self.ribbon.select(idx);
Task::none()
@@ -8548,6 +8549,10 @@ impl OpenCADStudio {
}
Message::CloseModal => {
if self.active_modal == Some(super::ModalKind::SheetSet) {
self.close_sheet_set_dialog();
return Task::none();
}
if self.active_modal == Some(super::ModalKind::Field) {
self.close_field_dialog();
return Task::none();