forked from 1b-agent/opencadstudio-upstream
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:
1 parent
3afd547e28
commit
c2d9ac5ae2
48 files changed
+1711
-83
No files matched your search
+18
-14
@@ -1273,20 +1273,7 @@ fn apply_point_cloud_ex_prop(data: &mut PointCloudExData, field: &str, value: &s
|
||||
.iter()
|
||||
.find(|(name, _)| value == t!(*name).as_ref() || value.eq_ignore_ascii_case(name))
|
||||
{
|
||||
data.stylization_type = *stylization;
|
||||
// Intensity and elevation start from their default schemes,
|
||||
// Spectrum and Earth.
|
||||
let default = match stylization {
|
||||
5 => Some(POINT_CLOUD_RAMPS[6].1),
|
||||
4 => Some(POINT_CLOUD_RAMPS[1].1),
|
||||
_ => None,
|
||||
};
|
||||
if let Some(default) = default {
|
||||
let slot = point_cloud_scheme_slot(data);
|
||||
if slot.is_empty() {
|
||||
*slot = default.to_string();
|
||||
}
|
||||
}
|
||||
set_point_cloud_stylization(data, *stylization);
|
||||
}
|
||||
}
|
||||
"ext_pcx_color_scheme" => {
|
||||
@@ -1326,6 +1313,23 @@ fn apply_point_cloud_ex_prop(data: &mut PointCloudExData, field: &str, value: &s
|
||||
}
|
||||
}
|
||||
|
||||
/// Sets a cloud's stylization (its stored value); intensity and elevation
|
||||
/// start from their default schemes, Spectrum and Earth.
|
||||
pub(crate) fn set_point_cloud_stylization(data: &mut PointCloudExData, stylization: i16) {
|
||||
data.stylization_type = stylization;
|
||||
let default = match stylization {
|
||||
5 => Some(POINT_CLOUD_RAMPS[6].1),
|
||||
4 => Some(POINT_CLOUD_RAMPS[1].1),
|
||||
_ => None,
|
||||
};
|
||||
if let Some(default) = default {
|
||||
let slot = point_cloud_scheme_slot(data);
|
||||
if slot.is_empty() {
|
||||
*slot = default.to_string();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Rejects what the reference rejects before a point cloud row is written.
|
||||
pub(crate) fn validate_point_cloud_property(field: &str, value: &str) -> Result<(), &'static str> {
|
||||
if field == "ext_pcx_scale" && !parse_f64(value).is_some_and(|scale| scale > 0.0) {
|
||||
|
||||
Reference in new issue
Block a user