fix SoftNcRunner GM code normalization.
This commit is contained in:
@@ -94,13 +94,50 @@
|
||||
<h3 id="classes">
|
||||
Classes
|
||||
</h3>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.BlockSkip.html">BlockSkip</a></dt>
|
||||
<dd><p>Optional block skip marker extracted from the head of an NC block.
|
||||
ISO 6983 / Fanuc calls this feature <i>Block Delete</i> (BDT switch);
|
||||
Siemens / Syntec / Mazak use the same <code>/</code> prefix with matching
|
||||
behaviour.</p>
|
||||
<p>
|
||||
The section is only present on blocks that carry a <code>/</code> prefix.
|
||||
Whether the block's NC commands are actually skipped at runtime
|
||||
depends on <a class="xref" href="Hi.NcParsers.Dependencys.IBlockSkipConfig.html">IBlockSkipConfig</a>:
|
||||
<ul><li>Config absent or the <a class="xref" href="Hi.NcParsers.Keywords.BlockSkip.html#Hi_NcParsers_Keywords_BlockSkip_Layer">Layer</a> bit OFF → the <code>/</code>
|
||||
prefix is consumed, <a class="xref" href="Hi.NcParsers.Keywords.BlockSkip.html#Hi_NcParsers_Keywords_BlockSkip_Body">Body</a> is left null, and the rest of
|
||||
the line parses as a regular NC block (comments still take effect).</li><li>Config present and the <a class="xref" href="Hi.NcParsers.Keywords.BlockSkip.html#Hi_NcParsers_Keywords_BlockSkip_Layer">Layer</a> bit ON → the rest
|
||||
of the line is moved into <a class="xref" href="Hi.NcParsers.Keywords.BlockSkip.html#Hi_NcParsers_Keywords_BlockSkip_Body">Body</a> and cleared from
|
||||
<code>UnparsedText</code>, so downstream parsing syntaxes see nothing and
|
||||
no NC action is emitted. Comment syntaxes run before this one so
|
||||
comments (and any embedded CsScript) still take effect.</li></ul>
|
||||
|
||||
Not a comment: a comment is static metadata, block skip is a runtime
|
||||
toggle that can change per machine/operator setting.
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.CannedCycle.html">CannedCycle</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.ICannedCycleDef.html">ICannedCycleDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.Comment.html">Comment</a></dt>
|
||||
<dd></dd>
|
||||
<dd><p>Comment extracted from an NC block.
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Comment.html#Hi_NcParsers_Keywords_Comment_Symbol">Symbol</a> identifies the comment style;
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Comment.html#Hi_NcParsers_Keywords_Comment_Text">Text</a> holds the content without the symbol.
|
||||
Downstream syntaxes (e.g., <a class="xref" href="Hi.NcParsers.Keywords.CsScript.html">CsScript</a>) may
|
||||
further trim <a class="xref" href="Hi.NcParsers.Keywords.Comment.html#Hi_NcParsers_Keywords_Comment_Text">Text</a> after extracting embedded markers.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html">CompoundMotion</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.ICompoundMotionDef.html">ICompoundMotionDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.Coolant.html">Coolant</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.ICoolantDef.html">ICoolantDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
@@ -134,20 +171,76 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.LocalCoordinateOffset.html">LocalCoordinateOffset</a></dt>
|
||||
<dd><p>Local coordinate offset state (G52) written by
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IsoLocalCoordinateOffset.html">IsoLocalCoordinateOffset</a></dt>
|
||||
<dd><p>ISO/Fanuc-family local coordinate offset state (G52) written by
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html">IsoLocalCoordinateOffsetSyntax</a>.
|
||||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||||
<p>
|
||||
ISO: G52 X Y Z (local coordinate system shift, additive to G54 series).
|
||||
Cancelled by G52 X0 Y0 Z0 or M30 (program end).
|
||||
Siemens equivalent: TRANS / ATRANS (handled by separate syntax).
|
||||
G52 X Y Z installs a local coordinate-system shift that stacks on top of
|
||||
the active G54-G59 work offset. The cancel mechanism is to write
|
||||
<code>G52 X0 Y0 Z0</code> (or hit M30 / reset) — there is no separate G code
|
||||
for "cancel". The offset vector is therefore always modal: zero is a
|
||||
valid modal value, not a "disabled" state, so the section is recorded
|
||||
on every block.
|
||||
</p>
|
||||
<p>
|
||||
Brand-specific kin: Siemens <code>TRANS</code>/<code>ATRANS</code> (which can also
|
||||
carry rotation/scale/mirror) and Heidenhain <code>TRANS DATUM</code> are
|
||||
handled by their own syntaxes and write to their own sections — they
|
||||
do not share this key, because their data shapes are richer.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.Motion.html">Motion</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IMotionDef.html">IMotionDef</a>.</p>
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.MachineCoordinateState.html">MachineCoordinateState</a></dt>
|
||||
<dd><p>Section key holder for <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html">IMachineCoordinateStateDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.MotionEvent.html">MotionEvent</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html">IMotionEventDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.MotionState.html">MotionState</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IMotionStateDef.html">IMotionStateDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.PathSmoothing.html">PathSmoothing</a></dt>
|
||||
<dd><p>Section key holder for <a class="xref" href="Hi.NcParsers.Keywords.IPathSmoothingDef.html">IPathSmoothingDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.PlaneSelect.html">PlaneSelect</a></dt>
|
||||
<dd><p>Section key holder for <a class="xref" href="Hi.NcParsers.Keywords.IPlaneSelectDef.html">IPlaneSelectDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.Positioning.html">Positioning</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IPositioningDef.html">IPositioningDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ProgramBoundary.html">ProgramBoundary</a></dt>
|
||||
<dd><p>Program start/end delimiter line (e.g., <code>%</code> in Fanuc/Mazak/Syntec,
|
||||
<code>%_N_xxx_MPF</code> in Siemens).
|
||||
Not a comment — the controller uses it as a tape/file boundary marker.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ProgramEnd.html">ProgramEnd</a></dt>
|
||||
<dd><p>Section key holder for <a class="xref" href="Hi.NcParsers.Keywords.IProgramEndDef.html">IProgramEndDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ProgramStop.html">ProgramStop</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IProgramStopDef.html">IProgramStopDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.RadiusCompensation.html">RadiusCompensation</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IRadiusCompensationDef.html">IRadiusCompensationDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
@@ -174,14 +267,39 @@ Siemens equivalent: TRANS / ATRANS (handled by separate syntax).
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ToolHeightCompensation.html">ToolHeightCompensation</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.Unit.html">Unit</a></dt>
|
||||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IUnitDef.html">IUnitDef</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<h3 id="interfaces">
|
||||
Interfaces
|
||||
</h3>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IArcMotionDef.html">IArcMotionDef</a></dt>
|
||||
<dd><p>Arc motion data written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html">CircularMotionSyntax</a>.
|
||||
Stored under the <a class="xref" href="Hi.NcParsers.Keywords.Motion.html">Motion</a> JSON section alongside
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IMotionDef.html">IMotionDef</a> properties.</p>
|
||||
Stored under the <a class="xref" href="Hi.Motion.html">Hi.Motion</a> JSON section alongside
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html">IMotionEventDef</a> properties.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ICannedCycleDef.html">ICannedCycleDef</a></dt>
|
||||
<dd><p>Canned cycle modal state (Group 09). Captures which cycle is
|
||||
currently active, its return mode (G98/G99), and the resolved
|
||||
absolute parameter set used for modal lookback.</p>
|
||||
<p>
|
||||
Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a> on
|
||||
every block that belongs to the canned-cycle group:
|
||||
cycle code present (G81/G82/G83/G73/G84/G74/G85/G86/G89/G76/G87),
|
||||
modal repeat (cycle still active, only coordinates given), or
|
||||
explicit cancel (<a class="xref" href="Hi.NcParsers.Keywords.Generic.IsoKeywords.html#Hi_NcParsers_Keywords_Generic_IsoKeywords_G80">G80</a>).
|
||||
</p>
|
||||
<p>
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.ICannedCycleDef.html#Hi_NcParsers_Keywords_ICannedCycleDef_Term">Term</a> = <code>"G80"</code> is the explicit-cancel sentinel
|
||||
used by <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">FindPreviousActiveCycle(LazyLinkedListNode<SyntaxPiece>, string[])</a>
|
||||
to terminate modal lookback without ambiguity; regular blocks
|
||||
(e.g. <code>G00 X.. Y..</code>) simply omit the section entirely.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
@@ -191,16 +309,30 @@ multiple sub-operations (G28, G53.1, G81, G82, etc.).
|
||||
Contains a <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html#Hi_NcParsers_Keywords_CompoundMotion_ItemsKey">ItemsKey</a> array resolved by
|
||||
<span class="xref">Hi.NcParsers.Semantics.CompoundMotionSemanticUtil</span>.</p>
|
||||
<p>Item types (discriminated by key presence):</p>
|
||||
<ul><li><a class="xref" href="Hi.NcParsers.Keywords.Motion.html">Motion</a> — rapid/feed linear motion
|
||||
(<a class="xref" href="Hi.NcParsers.Keywords.IMotionDef.html">IMotionDef</a> + <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateDef.html">IMachineCoordinateDef</a>)</li><li><a class="xref" href="Hi.NcParsers.Keywords.Dwell.html">Dwell</a> — pause (<a class="xref" href="Hi.NcParsers.Keywords.IDwellDef.html#Hi_NcParsers_Keywords_IDwellDef_Time">Time</a> in seconds)</li><li><a class="xref" href="Hi.NcParsers.Keywords.SpindleControl.html">SpindleControl</a> — spindle direction change
|
||||
<ul><li><a class="xref" href="Hi.Motion.html">Hi.Motion</a> — rapid/feed linear motion
|
||||
(<a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html">IMotionEventDef</a> + <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html">IMachineCoordinateStateDef</a>)</li><li><a class="xref" href="Hi.NcParsers.Keywords.Dwell.html">Dwell</a> — pause (<a class="xref" href="Hi.NcParsers.Keywords.IDwellDef.html#Hi_NcParsers_Keywords_IDwellDef_Time">Time</a> in seconds)</li><li><a class="xref" href="Hi.NcParsers.Keywords.SpindleControl.html">SpindleControl</a> — spindle direction change
|
||||
(<a class="xref" href="Hi.NcParsers.Keywords.ISpindleControlDef.html#Hi_NcParsers_Keywords_ISpindleControlDef_Direction">Direction</a>)</li><li><a class="xref" href="Hi.NcParsers.Keywords.SpindleOrientation.html">SpindleOrientation</a> — oriented spindle stop (OSS)
|
||||
(ISpindleOrientationDef.Angle_rad)</li></ul>
|
||||
(<a class="xref" href="Hi.NcParsers.Keywords.ISpindleOrientationDef.html#Hi_NcParsers_Keywords_ISpindleOrientationDef_Angle_deg">Angle_deg</a>)</li></ul>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ICoolantDef.html">ICoolantDef</a></dt>
|
||||
<dd><p>Coolant state (M07 mist / M08 flood / M09 off).
|
||||
Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html">CoolantSyntax</a>.
|
||||
Modal — persists until changed.</p>
|
||||
<p>
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.ICoolantDef.html#Hi_NcParsers_Keywords_ICoolantDef_IsOn">IsOn</a> is the on/off convenience flag (true for M07 and
|
||||
M08, false for M09). <a class="xref" href="Hi.NcParsers.Keywords.ICoolantDef.html#Hi_NcParsers_Keywords_ICoolantDef_Mode">Mode</a> carries the abstract kind
|
||||
(<a class="xref" href="Hi.NcParsers.Keywords.Coolant.html#Hi_NcParsers_Keywords_Coolant_Flood">Flood</a> / <a class="xref" href="Hi.NcParsers.Keywords.Coolant.html#Hi_NcParsers_Keywords_Coolant_Mist">Mist</a> /
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Coolant.html#Hi_NcParsers_Keywords_Coolant_Off">Off</a>) for consumers that need to distinguish
|
||||
flood vs mist.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IDwellDef.html">IDwellDef</a></dt>
|
||||
<dd><p>Dwell/pause section definition for use inside Sequence items.
|
||||
Resolved by Semantics.SequenceUtil into
|
||||
Resolved by <span class="xref">Hi.NcParsers.Semantics.CompoundMotionSemanticUtil</span> into
|
||||
<a class="xref" href="Hi.Numerical.Acts.ActDelay.html">ActDelay</a>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
@@ -219,15 +351,49 @@ Supported by all major CNC brands.
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateDef.html">IMachineCoordinateDef</a></dt>
|
||||
<dd></dd>
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html">IMachineCoordinateStateDef</a></dt>
|
||||
<dd><p>Modal machine-coordinate state — absolute six-axis machine position
|
||||
after the block has executed. Written on every block by motion-related
|
||||
LogicSyntaxs (<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a>,
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html">McAbcXyzFallbackSyntax</a>,
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html">McXyzSyntax</a>,
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html">MachineCoordSelectSyntax</a>,
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html">G53p1RotaryPositionSyntax</a>,
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html">ReferenceReturnSyntax</a>); seeded on the init
|
||||
block by <a class="xref" href="Hi.NcParsers.Initializers.HomeMcInitializer.html">HomeMcInitializer</a>; carried across
|
||||
non-motion blocks by <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>.</p>
|
||||
<p>
|
||||
Only configured axes appear as keys (X/Y/Z/A/B/C). Non-existent axes
|
||||
(e.g., A/B/C on a 3-axis machine) are <b>omitted</b> rather than written
|
||||
as NaN sentinels.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IMotionDef.html">IMotionDef</a></dt>
|
||||
<dd><p>Motion state written by LogicSyntaxs.MotionSyntax.
|
||||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html">IMotionEventDef</a></dt>
|
||||
<dd><p>One-shot motion event — present only on blocks that actually issue a
|
||||
motion command. Used by motion semantics (<a class="xref" href="Hi.NcParsers.Semantics.McLinearMotionSemantic.html">McLinearMotionSemantic</a>,
|
||||
<a class="xref" href="Hi.NcParsers.Semantics.McArcMotionSemantic.html">McArcMotionSemantic</a>, <a class="xref" href="Hi.NcParsers.Semantics.ClLinearMotionSemantic.html">ClLinearMotionSemantic</a>)
|
||||
as the trigger to emit motion <a class="xref" href="Hi.Numerical.Acts.IAct.html">IAct</a>. NOT carried
|
||||
forward across blocks. Property names are used as JSON keys via <code>nameof</code>.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IMotionStateDef.html">IMotionStateDef</a></dt>
|
||||
<dd><p>Modal motion state — Group 01 G-code mode (G00 / G01 / G02 / G03 ...).
|
||||
Written on every block by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html">LinearMotionSyntax</a> /
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html">CircularMotionSyntax</a>; carried across non-motion
|
||||
blocks by <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>. Property names are
|
||||
used as JSON keys via <code>nameof</code>.</p>
|
||||
<p>
|
||||
ISO standard: G00 (rapid) / G01 (linear feed) are Group 01 modal codes.
|
||||
Unlike sibling modal sections (<a class="xref" href="Hi.NcParsers.Keywords.Unit.html">Unit</a>, <a class="xref" href="Hi.NcParsers.Keywords.PlaneSelect.html">PlaneSelect</a>,
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html">Positioning</a>) which carry both a brand-specific <code>Term</code>
|
||||
and a brand-neutral conventional field, <a class="xref" href="Hi.NcParsers.Keywords.MotionState.html">MotionState</a> intentionally
|
||||
keeps only <a class="xref" href="Hi.NcParsers.Keywords.IMotionStateDef.html#Hi_NcParsers_Keywords_IMotionStateDef_Term">Term</a>: the brand-neutral semantic ("what kind of
|
||||
motion happened") lives on the sibling one-shot <a class="xref" href="Hi.NcParsers.Keywords.MotionEvent.html">MotionEvent</a>
|
||||
(<a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html#Hi_NcParsers_Keywords_IMotionEventDef_Form">Form</a> = McLinear / McArc / ClLinear / ClArc).
|
||||
State here is purely the modal latch of the last Group-01 G-code so
|
||||
downstream <code>FindPrevious*</code> can resume motion-mode bookkeeping.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
@@ -236,17 +402,88 @@ ISO standard: G00 (rapid) / G01 (linear feed) are Group 01 modal codes.
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IPositioningModeDef.html">IPositioningModeDef</a></dt>
|
||||
<dd><p>JsonObject key for positioning mode (G90 absolute / G91 incremental).
|
||||
Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.PositioningModeSyntax.html">PositioningModeSyntax</a>,
|
||||
consumed by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a>
|
||||
and canned cycle syntaxes.</p>
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IPathSmoothingDef.html">IPathSmoothingDef</a></dt>
|
||||
<dd><p>Path smoothing state written by
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.PathSmoothingSyntax.html">PathSmoothingSyntax</a>.</p>
|
||||
<p>
|
||||
ISO/Fanuc G05.1 Q1 (enable) / G05.1 Q0 (disable):
|
||||
high-precision contour control / AICC / Nano Smoothing.
|
||||
Controller-internal interpolation black box — simulation records
|
||||
the state but does not alter the tool path.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IPlaneSelectDef.html">IPlaneSelectDef</a></dt>
|
||||
<dd><p>Active plane selection state written by
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html">PlaneSelectSyntax</a>.
|
||||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||||
<p>
|
||||
ISO: G17/G18/G19. Heidenhain: implicit from L/CC syntax.
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IPlaneSelectDef.html#Hi_NcParsers_Keywords_IPlaneSelectDef_Term">Term</a> carries the brand-specific G-code; <a class="xref" href="Hi.NcParsers.Keywords.IPlaneSelectDef.html#Hi_NcParsers_Keywords_IPlaneSelectDef_Plane">Plane</a>
|
||||
stores the conventional, brand-neutral axis-pair name (XY/ZX/YZ).
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IPositioningDef.html">IPositioningDef</a></dt>
|
||||
<dd><p>Modal positioning state — ISO Group 03 (G90 absolute / G91 incremental).
|
||||
Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html">PositioningSyntax</a>, consumed by
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a>, canned cycle
|
||||
syntaxes, and <a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html">MachineCoordSelectSyntax</a>.
|
||||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||||
<p>
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IPositioningDef.html#Hi_NcParsers_Keywords_IPositioningDef_Term">Term</a> is the brand-specific G-code (Fanuc/ISO G90/G91);
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IPositioningDef.html#Hi_NcParsers_Keywords_IPositioningDef_Mode">Mode</a> is the conventional, brand-neutral name
|
||||
(<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Absolute">Absolute</a> / <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Incremental">Incremental</a>).
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IProgramEndDef.html">IProgramEndDef</a></dt>
|
||||
<dd><p>Program end marker (M02/M30).
|
||||
Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html">ProgramEndSyntax</a>.
|
||||
Other syntaxes (e.g. <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html">IsoLocalCoordinateOffsetSyntax</a>)
|
||||
read this section to reset modal state instead of detecting M30 directly.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IProgramStopDef.html">IProgramStopDef</a></dt>
|
||||
<dd><p>Program-stop marker (M00 unconditional / M01 optional).
|
||||
Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html">ProgramStopSyntax</a> on each
|
||||
block that carries an M00/M01 flag. Non-modal: the section appears
|
||||
only on the exact block where the stop code is present.</p>
|
||||
<p>
|
||||
Distinct from <a class="xref" href="Hi.NcParsers.Keywords.IProgramEndDef.html">IProgramEndDef</a> (M02/M30, end of program).
|
||||
</p>
|
||||
<p>
|
||||
M00 halts execution unconditionally; the operator must press Cycle
|
||||
Start to resume. M01 is an optional stop gated by the operator's
|
||||
"Optional Stop" panel switch — ignored when the switch is off.
|
||||
This parsing-layer section records the NC intent; runtime /
|
||||
semantic layers decide whether to actually pause.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html">IProgramXyzDef</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IRadiusCompensationDef.html">IRadiusCompensationDef</a></dt>
|
||||
<dd><p>Radius compensation state written by
|
||||
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a>.
|
||||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||||
<p>
|
||||
Managed commands (ISO): G41 (left), G42 (right), G40 (cancel).
|
||||
Heidenhain Klartext maps RL → G41, RR → G42, R0 → G40.
|
||||
When active, the tool path is offset perpendicular to the programmed path
|
||||
by <a class="xref" href="Hi.NcParsers.Keywords.IRadiusCompensationDef.html#Hi_NcParsers_Keywords_IRadiusCompensationDef_Radius_mm">Radius_mm</a>; <a class="xref" href="Hi.NcParsers.Keywords.IRadiusCompensationDef.html#Hi_NcParsers_Keywords_IRadiusCompensationDef_Side">Side</a> determines left vs right.
|
||||
The root <code>ProgramXyz</code> retains the user-programmed position;
|
||||
<code>MachineCoordinate</code> is overwritten to reflect the compensated path.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ISpindleControlDef.html">ISpindleControlDef</a></dt>
|
||||
<dd><p>Spindle control item for use inside <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html#Hi_NcParsers_Keywords_CompoundMotion_ItemsKey">ItemsKey</a>
|
||||
@@ -304,10 +541,38 @@ Heidenhain equivalent: TOOL CALL / M128/M129 (handled by separate syntax).
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html">ITransformationDef</a></dt>
|
||||
<dd><p>Chain of named ProgramXyz → MachineCoordinate transformation entries.
|
||||
Stored as a <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonarray">JsonArray</a> of entries, each with “Source” and “Mat4d” keys.
|
||||
Each contributing <a class="xref" href="Hi.NcParsers.Syntaxs.INcSyntax.html">INcSyntax</a> adds or replaces its own entry by source name.
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a> composes all entries in order:
|
||||
<code>McXyz = ProgramXyz * T[0] * T[1] * ... * T[n]</code>.</p>
|
||||
Stored as a <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonarray">JsonArray</a> of entries, each with
|
||||
<code>“Source”</code>, <code>“Kind”</code>, and <code>“Mat4d”</code> keys.
|
||||
Each contributing <a class="xref" href="Hi.NcParsers.Syntaxs.INcSyntax.html">INcSyntax</a> adds or replaces its own
|
||||
entry by source name.
|
||||
<a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_GetComposedTransform_System_Text_Json_Nodes_JsonObject_">GetComposedTransform(JsonObject)</a>
|
||||
composes entries in order: <code>McXyz = ProgramXyz * T[0] * T[1] * ... * T[n]</code>.</p>
|
||||
<p>
|
||||
<b><code>Kind</code> contour-validity classification.</b> Each entry is either:
|
||||
<ul><li><code>"Static"</code> — the Mat4d is valid for any point along the contour.
|
||||
Tilt, coord-offset, and the kinematic pivot in non-RTCP / rotary-stable
|
||||
blocks are all Static.</li><li><code>"Dynamic"</code> — the Mat4d is a <i>block-endpoint snapshot</i> of a
|
||||
rotary-state-dependent transform (RTCP rotary-dynamic). Composition still
|
||||
yields a correct endpoint MC, but the matrix is not contour-valid:
|
||||
intermediate CL-point positions cannot be derived by applying it to an
|
||||
interpolated ProgramXyz. The semantic layer
|
||||
(<a class="xref" href="Hi.NcParsers.Semantics.ClLinearMotionSemantic.html">ClLinearMotionSemantic</a>) handles per-step IK
|
||||
separately.</li></ul>
|
||||
Use <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_HasDynamicEntry_System_Text_Json_Nodes_JsonObject_">HasDynamicEntry(JsonObject)</a> to detect
|
||||
the presence of any Dynamic entry on this block.
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IUnitDef.html">IUnitDef</a></dt>
|
||||
<dd><p>Unit-system state (ISO Group 06: G20 inch / G21 metric).
|
||||
Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html">UnitModeSyntax</a>. Modal.</p>
|
||||
<p>
|
||||
HiNC's NC pipeline works exclusively in millimetres. G21 is therefore
|
||||
a no-op confirmation of the default; G20 is reported as an
|
||||
Unsupported Error and callers are expected to pre-convert the NC
|
||||
program to metric before loading.
|
||||
</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="jumplist">
|
||||
|
||||
Reference in New Issue
Block a user