forked from 1b-agent/opencadstudio-upstream
chore: bump codec d28fd71, kernel a03e4f0, graph 79bdc4b
Codec: PRs #71-#74 merged (MPOLYGON layout, multiline ATTDEF/ATTRIB DXF, DXF MATERIAL/ACSH matrix, restorable SAT/SAB + history roots) and issues #55 #64-#69 fixed. EntityType now boxes Surface, Extended, Table, MultiLeader and Helix (2344 B -> 848 B per entity): construction sites wrap in Box, the entity traits forward through Box, and the python plugin generator converts with into(). Kernel: PR #70 (cuboid ring winding). Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
8c1471078d
commit
443b935a3f
31 files changed
+147
-84
No files matched your search
@@ -2108,7 +2108,7 @@ impl MultiLeaderTess for MultiLeader {
|
||||
fill_tris_low: Vec::new(),
|
||||
});
|
||||
|
||||
let host = codec::EntityType::MultiLeader(ml.clone());
|
||||
let host = codec::EntityType::MultiLeader(Box::new(ml.clone()));
|
||||
for block_use in crate::scene::render_graph::entity_render_block_uses(document, &host, 1.0)
|
||||
.into_iter()
|
||||
.filter(|block_use| {
|
||||
|
||||
@@ -81,6 +81,63 @@ pub trait Transformable {
|
||||
fn apply_transform(&mut self, t: &EntityTransform);
|
||||
}
|
||||
|
||||
// The codec boxes its rare wide entity kinds (Surface, Table, MultiLeader,
|
||||
// Helix, Extended) so every other entity is stored narrow; the boxed ones
|
||||
// answer through their contents.
|
||||
impl<T: RenderConvertible + ?Sized> RenderConvertible for Box<T> {
|
||||
fn to_render(&self, document: &CadDocument) -> Option<RenderEntity> {
|
||||
(**self).to_render(document)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Grippable + ?Sized> Grippable for Box<T> {
|
||||
fn grips(&self) -> Vec<GripDef> {
|
||||
(**self).grips()
|
||||
}
|
||||
fn apply_grip(&mut self, grip_id: usize, apply: GripApply) {
|
||||
(**self).apply_grip(grip_id, apply)
|
||||
}
|
||||
fn grip_menu(&self, grip_id: usize) -> Vec<GripMenuItem> {
|
||||
(**self).grip_menu(grip_id)
|
||||
}
|
||||
fn apply_grip_menu(&mut self, grip_id: usize, action: GripMenuAction) {
|
||||
(**self).apply_grip_menu(grip_id, action)
|
||||
}
|
||||
fn apply_grip_menu_value(&mut self, grip_id: usize, action: GripMenuAction, value: f64) {
|
||||
(**self).apply_grip_menu_value(grip_id, action, value)
|
||||
}
|
||||
fn grip_menu_value_prompt(
|
||||
&self,
|
||||
grip_id: usize,
|
||||
action: GripMenuAction,
|
||||
) -> Option<&'static str> {
|
||||
(**self).grip_menu_value_prompt(grip_id, action)
|
||||
}
|
||||
fn grip_menu_point_value(
|
||||
&self,
|
||||
grip_id: usize,
|
||||
action: GripMenuAction,
|
||||
point: glam::DVec3,
|
||||
) -> Option<f64> {
|
||||
(**self).grip_menu_point_value(grip_id, action, point)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: PropertyEditable + ?Sized> PropertyEditable for Box<T> {
|
||||
fn geometry_properties(&self, text_style_names: &[String]) -> Vec<PropSection> {
|
||||
(**self).geometry_properties(text_style_names)
|
||||
}
|
||||
fn apply_geom_prop(&mut self, field: &str, value: &str) {
|
||||
(**self).apply_geom_prop(field, value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Transformable + ?Sized> Transformable for Box<T> {
|
||||
fn apply_transform(&mut self, t: &EntityTransform) {
|
||||
(**self).apply_transform(t)
|
||||
}
|
||||
}
|
||||
|
||||
/// Inquiry-time mass / area / perimeter properties for entities whose
|
||||
/// 2D footprint has a meaningful area or perimeter (Circle, Arc, Line,
|
||||
/// LwPolyline, Ellipse). Entities outside this set get `None` via the
|
||||
|
||||
Reference in new issue
Block a user