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
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; }