Interface IMotionEventDef
One-shot motion event — present on every block whose source programmed
a motion command, regardless of whether the resulting displacement is non-zero.
A redundant G01 X10 on a block already at X10 still gets a
MotionEvent; the motion semantics
(McLinearMotionSemantic,
McArcMotionSemantic, ClLinearMcMotionSemantic)
then early-return on distance <= 0 and emit no
IAct. NOT carried forward across blocks.
Reason for the "programmed, not displaced" definition: Fanuc G66 modal macro fires once per programmed motion command (per Fanuc spec — no distance gate), so FanucModalMacroSyntax.Expansion uses MotionEvent presence as its trigger. Suppressing the section on zero-distance moves would silently change G66 behaviour. The modal sibling MotionState separately latches the Group-01 mode for readers that only need to know "what G-code is active".
Property names are used as JSON keys vianameof.
public interface IMotionEventDef
- Extension Methods
Examples
"MotionEvent": { "Form": "McLinear", "IsRapid": false }
Remarks
Term source-precedence rule: modal motion (G00/G01/G02/G03)
leaves Term unset because the source G-code is already
latched in the sibling MotionState.Term.
Non-modal one-shots that drive the block's motion themselves — currently
G53.1 (rapid rotary positioning to align with the active tilted
plane), and the same pattern is the intended fit for any future
non-modal motion command — set Term to record the
originating G-code. When Term is non-null, readers should
treat it as the authoritative source for this block; the modal
MotionState in this case is inherited context, not the
block's actual motion driver.
Properties
Form
Interpolation form. See MotionForm.
string Form { get; set; }
Property Value
IsRapid
True for rapid traverse; false (default) for programmed feedrate.
bool IsRapid { get; set; }
Property Value
PoseStated
True when the writer solved and STATED the full six-axis pose on this
block's MachineCoordinateState
and wants the pose-carrying act (currently the
ClToMcTransformSyntax constant-posture downgrade: its acts are
expanded pose-first, so even an unchanged rotary state must ride the
act). Absent/false for NC blocks: there
McLinearMotionSemantic discriminates by rotary VALUE change —
key presence stopped meaning “commanded” once
ModalCarrySyntax completes every
section with carried modal values.
bool PoseStated { get; set; }
Property Value
Term
Source G-code term, set only when a non-modal one-shot drove
this block's motion (e.g. “G53.1”). Null/absent for modal motion
blocks (G00/G01/G02/G03) whose source is recorded on the sibling
Term. See type-level remarks for the
precedence rule.
string Term { get; set; }