feat(cad): integrate standard codec coverage

Render, edit, query, select, and explode newly decoded standard entity variants. Pin acadifc de8d6b5 and preserve None color semantics.
This commit is contained in:
Hakan Seven committed 2026-07-26 19:30:43 +03:00
1 parent 34d0c377e2
commit 731df4a725
19 files changed
+484 -72

No files matched your search

+16
View File
@@ -1750,6 +1750,22 @@ impl OpenCADStudio {
stretched |= mv(&mut d.feature_location);
stretched |= mv(&mut d.leader_endpoint);
}
Dimension::Arc(d) => {
stretched |= mv(&mut d.definition_point);
stretched |= mv(&mut d.first_extension_point);
stretched |= mv(&mut d.second_extension_point);
stretched |= mv(&mut d.center_point);
if d.has_leader {
stretched |= mv(&mut d.first_leader_point);
stretched |= mv(&mut d.second_leader_point);
}
}
Dimension::LargeRadial(d) => {
stretched |= mv(&mut d.definition_point);
stretched |= mv(&mut d.chord_point);
stretched |= mv(&mut d.override_center);
stretched |= mv(&mut d.jog_point);
}
}
// Pinned text follows too; the zero sentinel means
// "auto placement" and must not be captured by a
+2
View File
@@ -1323,6 +1323,8 @@ fn add_selected_verb(entity: &acadrust::EntityType) -> Option<&'static str> {
DimensionType::Diameter => "DIMDIAMETER",
DimensionType::Radius => "DIMRADIUS",
DimensionType::Ordinate => "DIMORDINATE",
DimensionType::ArcLength => "DIMARC",
DimensionType::LargeRadial => "DIMJOGGED",
}
}
_ => return None,
+1
View File
@@ -383,6 +383,7 @@ pub(super) fn entity_type_key(entity: &acadrust::EntityType) -> String {
Light(_) => "light",
SectionSymbol(_) => "sectionsymbol",
ViewBorder(_) => "viewborder",
Extended(entity) => return entity.class_name().to_ascii_lowercase(),
Seqend(_) => "seqend",
Unknown(_) => "unknown",
}
+2 -3
View File
@@ -1117,7 +1117,7 @@ const QSELECT_ANY_PROP: &str = "(Any property)";
/// fields (Start X, Length, Radius, …) so type-specific filtering works.
pub(super) fn qselect_overlay<'a>(
state: &'a crate::app::QSelectState,
types: &[&'static str],
types: &[String],
properties: &[(String, String)],
) -> Element<'a, Message> {
use iced::widget::{checkbox, pick_list};
@@ -1165,7 +1165,7 @@ pub(super) fn qselect_overlay<'a>(
};
let mut type_options: Vec<String> = vec![QSELECT_ANY_TYPE.to_string()];
type_options.extend(types.iter().map(|s| (*s).to_string()));
type_options.extend(types.iter().cloned());
let mut prop_options: Vec<crate::app::QSelectPropertyChoice> =
vec![crate::app::QSelectPropertyChoice {
@@ -1337,4 +1337,3 @@ pub(super) fn qselect_overlay<'a>(
stack![catcher, centered].into()
}