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:
parent
34d0c377e2
commit
731df4a725
19 changed files with 484 additions and 72 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue