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:
Hakan SevenandClaude Opus 5.5 committed 2026-10-02 00:08:55 +03:00
1 parent 8c1471078d
commit 443b935a3f
31 files changed
+147 -84

No files matched your search

+1 -1
View File
@@ -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| {
+57
View File
@@ -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