feat(blocks): wire Stretch actions and independent reference evaluation

Author a native Stretch action from a Linear, Polar or XY parameter, a two-corner stretch frame, an object selection and a marker. Preview and retain its frame in BEDIT, with selectable and movable action markers.

Freeze line and planar lightweight-polyline vertex bindings, preserve curved-segment height, move wholly selected objects, and evaluate independent saved INSERTs from their definition. Retain native DWG/DXF data, copied-reference isolation and undo/redo.

Validate with synthetic frame, topology, parameter, history, Test Block, drawing-reference, COPY and roundtrip regressions: 340 block tests pass (6 existing opt-in ignored), plus 41 dock and 27 viewport tests. Other entity types, Polar Stretch, custom multipliers and chaining remain unsupported.
This commit is contained in:
Karim Jerbi committed 2026-10-17 10:03:59 +01:00
1 parent 94940ad77c
commit 042f26a4cc
14 files changed
+827 -27

No files matched your search

+12 -1
View File
@@ -1203,8 +1203,19 @@ bg={bg_ms:.1}ms n={view_count}"
session.br_handle,
)
.into_iter()
.map(|(_, action, _, _)| {
.map(|(handle, action, _, _)| {
let mut g = crate::scene::block_distance_parameter::Graphic::default();
let frame = crate::scene::block_actions::frame_outline(
&tab.scene.document,
handle,
);
g.lines.extend(
frame
.iter()
.zip(frame.iter().cycle().skip(1))
.take(frame.len())
.map(|(a, b)| [*a, *b]),
);
g.grips.push((action.display_location, false));
g.labels
.push((action.display_location, action.element.name.clone()));