Point clouds: attach dialog, crop toolbar, stylize, palette rows

POINTCLOUDATTACH opens the Attach Point Cloud dialog after the file is
chosen; its Attach button lives in the Attach Underlay list instead of a
separate Insert panel. A selected cloud brings the crop tools to the
right-edge toolbar. POINTCLOUDSTYLIZE sets the stylization with the
reference's prompts, the External References palette lists point clouds
(unload, reload, detach, path), and definitions keep the header extents.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
ramox81andClaude Opus 5.5 committed 2026-09-30 10:14:44 +03:00
1 parent 3afd547e28
commit c2d9ac5ae2
48 files changed
+1711 -83

No files matched your search

+14
View File
@@ -995,6 +995,8 @@ pub(super) fn on_ribbon_tool_click(&mut self, tool_id: String, event: ModuleEven
}
}
self.tabs[i].scene.reseed_underlays();
// Point clouds redraw as unloaded (box and saved path).
self.tabs[i].scene.bump_geometry();
}
XrefPaletteOp::Reload => {
let base_dir: std::path::PathBuf = host
@@ -1036,6 +1038,18 @@ pub(super) fn on_ribbon_tool_click(&mut self, tool_id: String, event: ModuleEven
self.tabs[i].xref_unloaded.remove(key);
}
self.tabs[i].scene.reseed_underlays();
} else if *kind == crate::io::xref_model::RefKind::PointCloud {
// A point cloud reloads by setting its definition loaded.
for (key, row_name, row_kind, _) in &picked {
if row_kind == kind && row_name == name {
crate::io::xref::set_point_cloud_loaded(
&mut self.tabs[i].scene.document,
codec::types::Handle::new(*key),
true,
);
}
}
self.tabs[i].scene.bump_geometry();
} else if *kind != crate::io::xref_model::RefKind::DwgXref {
self.command_line.push_error(crate::tf!(
"{}: reload applies to drawing references only.",
-6
View File
@@ -2419,12 +2419,6 @@ impl OpenCADStudio {
}
}
}
if path
.extension()
.is_some_and(|extension| extension.eq_ignore_ascii_case("dwg"))
{
crate::io::xref::relative_point_cloud_paths(&mut snapshot, &path);
}
let clone_ms = clone_started.elapsed().as_secs_f64() * 1000.0;
if crate::perf::enabled() {
crate::perf_record!(