review(#1660, #1663): associative sweep scan, arc angles, viewport off bit

- refresh_associative_sweeps runs on every edit and scanned the xdata of
  every entity; it now returns at once when no associative swept surface
  exists (its application is not registered) and looks at surfaces only.
- An arc's end angle was raised by TAU in a loop, which never ends on a
  huge angle from a damaged file; the sweep is taken with rem_euclid.
- The sweep DELOBJ test expected surface sweeps to delete their sources,
  which #1663 changed on purpose: an associative surface keeps them.
- codec c9ffcac (opencadcodec #103) adds an explicit viewport-off bit: the
  viewport on state is read with is_on() and set with turn_on()/turn_off()
  everywhere, so a viewport the file marks off shows off and can be turned
  back on from Properties.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-08 14:56:30 +03:00
1 parent 9519614e91
commit ff6e2a6613
13 files changed
+42 -29

No files matched your search

+8 -5
View File
@@ -113,7 +113,7 @@ fn properties(vp: &Viewport) -> Vec<PropSection> {
field: "vp_on",
value: PropValue::BoolToggle {
field: "vp_on",
value: vp.status.is_on,
value: vp.is_on(),
},
},
ro(
@@ -193,11 +193,14 @@ fn apply_geom_prop(vp: &mut Viewport, field: &str, value: &str) {
return;
}
"vp_on" => {
vp.status.is_on = if value == "toggle" {
!vp.status.is_on
// turn_on/turn_off keep the explicit-off bit in step, so a
// viewport the file marked off can be turned back on.
let on = if value == "toggle" { !vp.is_on() } else { value == "true" };
if on {
vp.turn_on();
} else {
value == "true"
};
vp.turn_off();
}
return;
}
"vp_perspective" => {