fix(flomni): check OSA collision warning against fosaz's defined IN position
The foptz-target OSA-collision warning was checking fosaz's current live readback, but fosaz is normally parked safely OUT except when actually in use -- so the warning would almost never fire in practice. Check against fosaz's "in" user_parameter instead (the same nominal position FlomniOpticsMixin.fosa_in() itself checks before refusing a fosaz move), since that's the real question: would this foptz target collide with the OSA if it were swapped in. Live-verified against the running simulated flomni session: fosaz's defined IN position is 13.1mm; the warning now correctly engages right at the real physical crossover (foptz=19 -> +0.90mm clearance, safe; foptz=20 -> -0.10mm, warns), matching compute_osa_remaining_space() exactly through the real dialog/client/device-RPC code path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NPZ9gzN2rt3wgiMnTKyrug
This commit is contained in:
1 parent
a5fcc73049
commit
47cbb08c13
1 file changed
+19
-9
@@ -2193,12 +2193,19 @@ class CommandJobBuilderDialog(QDialog):
|
||||
"""Live, advisory-only OSA-collision warning for
|
||||
move_foptz_with_shift's foptz_target field.
|
||||
|
||||
Checked against fosaz's *defined* IN position (its "in"
|
||||
user_parameter), not wherever fosaz happens to be reading right
|
||||
now -- fosaz is normally parked safely OUT except when actually in
|
||||
use, so checking the live position would almost never warn. The
|
||||
real question is "if the OSA were swapped in at its nominal
|
||||
position while foptz is at this target, would it collide", which
|
||||
is also exactly what FlomniOpticsMixin.fosa_in() itself checks
|
||||
(and refuses on) for fosaz moves -- this surfaces the same check
|
||||
here, at data-entry time, for foptz instead.
|
||||
|
||||
The move itself stays a plain absolute move (see
|
||||
_queue_action_move_foptz_with_shift's docstring) -- this just
|
||||
surfaces, at data-entry time, the same clearance check
|
||||
FlomniOpticsMixin.fosa_in() enforces (by refusing) for fosaz moves,
|
||||
so an operator can see a likely OSA collision before queuing a
|
||||
foptz target, without the queue action itself blocking on it.
|
||||
_queue_action_move_foptz_with_shift's docstring) -- this is
|
||||
advisory only, the queue action itself doesn't block on it.
|
||||
"""
|
||||
from csaxs_bec.bec_ipython_client.plugins.flomni.flomni_optics_mixin import (
|
||||
compute_osa_remaining_space,
|
||||
@@ -2217,14 +2224,17 @@ class CommandJobBuilderDialog(QDialog):
|
||||
if fosaz is None:
|
||||
return
|
||||
try:
|
||||
fosaz_val = fosaz.readback.get()
|
||||
fosaz_in = (fosaz.user_parameter or {}).get("in")
|
||||
except Exception:
|
||||
return
|
||||
clearance = compute_osa_remaining_space(foptz_widget.value(), fosaz_val)
|
||||
if fosaz_in is None:
|
||||
return
|
||||
clearance = compute_osa_remaining_space(foptz_widget.value(), fosaz_in)
|
||||
if clearance <= 0:
|
||||
lbl.setText(
|
||||
f"Warning: at this foptz target, OSA clearance would be "
|
||||
f"{clearance:.2f} mm (<=0 = collision risk with a normal OMNY pin)."
|
||||
f"Warning: at this foptz target, OSA clearance at its defined "
|
||||
f"IN position ({fosaz_in:.2f} mm) would be {clearance:.2f} mm "
|
||||
"(<=0 = collision risk with a normal OMNY pin)."
|
||||
)
|
||||
lbl.setVisible(True)
|
||||
else:
|
||||
|
||||
Reference in new issue
Block a user