From 768b3ee97b239687e26d71c2b50ca4575f590654 Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Thu, 27 Aug 2026 19:03:43 +1000 Subject: [PATCH] Fix Export to CAM's default filename appending .stl instead of replacing the extension tab_display_name() is the drawing's real filename including its own extension (e.g. "Drawing1.dwg") - the CamExportDialogOpen handler appended ".stl" directly onto that, producing "Drawing1.dwg.stl" instead of "Drawing1.stl". Strips the existing extension via file_stem() first. --- src/app/update/mod.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/app/update/mod.rs b/src/app/update/mod.rs index 27f6f648..140fbc07 100644 --- a/src/app/update/mod.rs +++ b/src/app/update/mod.rs @@ -1182,7 +1182,15 @@ impl OpenCADStudio { .push_error(crate::t!("STLOUT: no 3D mesh data in this drawing.").as_ref()); return Task::none(); } - self.cam_export_filename = format!("{}.stl", self.tabs[i].tab_display_name()); + // tab_display_name() is the drawing's real filename including + // its own extension (e.g. "Drawing1.dwg") - appending ".stl" + // directly produced "Drawing1.dwg.stl" instead of replacing + // it (CMMS bug report, 2026-08-27). + let base = std::path::Path::new(&self.tabs[i].tab_display_name()) + .file_stem() + .map(|s| s.to_string_lossy().into_owned()) + .unwrap_or_else(|| self.tabs[i].tab_display_name()); + self.cam_export_filename = format!("{base}.stl"); self.active_modal = Some(crate::app::ModalKind::CamExportDialog); Task::none() }