875 lines
53 KiB
HTML
875 lines
53 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Namespace Hi.NcParsers.Keywords | HiAPI-C# 2025 </title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="title" content="Namespace Hi.NcParsers.Keywords | HiAPI-C# 2025 ">
|
||
|
||
|
||
<link rel="icon" href="../img/HiAPI.favicon.ico">
|
||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||
<link rel="stylesheet" href="../public/main.css">
|
||
<meta name="docfx:navrel" content="../toc.html">
|
||
<meta name="docfx:tocrel" content="toc.html">
|
||
|
||
<meta name="docfx:rel" content="../">
|
||
|
||
|
||
|
||
<meta name="loc:inThisArticle" content="In this article">
|
||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||
<meta name="loc:tocFilter" content="Filter by title">
|
||
<meta name="loc:nextArticle" content="Next">
|
||
<meta name="loc:prevArticle" content="Previous">
|
||
<meta name="loc:themeLight" content="Light">
|
||
<meta name="loc:themeDark" content="Dark">
|
||
<meta name="loc:themeAuto" content="Auto">
|
||
<meta name="loc:changeTheme" content="Change theme">
|
||
<meta name="loc:copy" content="Copy">
|
||
<meta name="loc:downloadPdf" content="Download PDF">
|
||
|
||
<script type="module" src="./../public/docfx.min.js"></script>
|
||
|
||
<script>
|
||
const theme = localStorage.getItem('theme') || 'auto'
|
||
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
|
||
</script>
|
||
|
||
</head>
|
||
|
||
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
|
||
<header class="bg-body border-bottom">
|
||
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
|
||
<div class="container-xxl flex-nowrap">
|
||
<a class="navbar-brand" href="../index.html">
|
||
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
|
||
|
||
</a>
|
||
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
|
||
<i class="bi bi-three-dots"></i>
|
||
</button>
|
||
<div class="collapse navbar-collapse" id="navpanel">
|
||
<div id="navbar">
|
||
<form class="search" role="search" id="search">
|
||
<i class="bi bi-search"></i>
|
||
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
</header>
|
||
|
||
<main class="container-xxl">
|
||
<div class="toc-offcanvas">
|
||
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
|
||
<div class="offcanvas-header">
|
||
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
|
||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
|
||
</div>
|
||
<div class="offcanvas-body">
|
||
<nav class="toc" id="toc"></nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="content">
|
||
<div class="actionbar">
|
||
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
|
||
<i class="bi bi-list"></i>
|
||
</button>
|
||
|
||
<nav id="breadcrumb"></nav>
|
||
</div>
|
||
|
||
<article data-uid="Hi.NcParsers.Keywords">
|
||
|
||
<h1 id="Hi_NcParsers_Keywords" data-uid="Hi.NcParsers.Keywords" class="text-break">Namespace Hi.NcParsers.Keywords</h1>
|
||
<div class="markdown level0 summary"></div>
|
||
<div class="markdown level0 conceptual"></div>
|
||
<div class="markdown level0 remarks"></div>
|
||
|
||
<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.CallFrame.html">CallFrame</a></dt>
|
||
<dd><p>One entry in <a class="xref" href="Hi.NcParsers.Keywords.CallStack.html#Hi_NcParsers_Keywords_CallStack_Frames">Frames</a>. Holds the caller-side
|
||
information consumers need to “unwind” or “look back” — currently
|
||
only the relative file path of the caller, used by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html">SubProgramReturnSyntax</a> on
|
||
<code>M99 P{seq}</code> to locate the caller's <code>N{seq}</code> block.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.CallStack.html">CallStack</a></dt>
|
||
<dd><p>JSON-section data shape representing the active call-frame stack on
|
||
a block — pushed by call-and-inline syntaxes
|
||
(<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html">SubProgramCallSyntax</a> for M98/M198,
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html">FanucMacroCallSyntax</a> for G65, and
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html">FanucModalMacroSyntax</a>'s expansion
|
||
phase for G66 implicit triggers) and popped by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html">SubProgramReturnSyntax</a> on M99. Every
|
||
block between push and pop carries the section forward via
|
||
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>; the caller's blocks
|
||
before push and after pop carry the surrounding stack state
|
||
(typically empty when running from the main file).</p>
|
||
<p>
|
||
The section is wrapped in a <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a> rather than
|
||
exposed as a bare <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonarray">JsonArray</a> so it fits ModalCarry's
|
||
"deep-clone JsonObject" carry pattern — the array of frames lives
|
||
inside <a class="xref" href="Hi.NcParsers.Keywords.CallStack.html#Hi_NcParsers_Keywords_CallStack_Frames">Frames</a>.
|
||
</p>
|
||
</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><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">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.CoordinateOffset.html">CoordinateOffset</a></dt>
|
||
<dd><p>Work coordinate offset state written by
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html">IsoCoordinateOffsetSyntax</a>.
|
||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||
<p>
|
||
Managed commands (ISO): G54, G55, G56, G57, G58, G59, G59.1–G59.9.
|
||
Siemens: G54–G57 + G505–G599 (extended), G500 to cancel.
|
||
Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.CsScript.html">CsScript</a></dt>
|
||
<dd><p>Section-key holder for inline C# scripts attached to an NC block. Carries
|
||
<a class="xref" href="Hi.NcParsers.Keywords.CsScript.html#Hi_NcParsers_Keywords_CsScript_BeginScript">BeginScript</a> (run before the block's acts) and
|
||
<a class="xref" href="Hi.NcParsers.Keywords.CsScript.html#Hi_NcParsers_Keywords_CsScript_EndScript">EndScript</a> (run after). Resolved by
|
||
<a class="xref" href="Hi.NcParsers.Semantics.CsScriptBeginSemantic.html">CsScriptBeginSemantic</a> and
|
||
<a class="xref" href="Hi.NcParsers.Semantics.CsScriptEndSemantic.html">CsScriptEndSemantic</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.Dwell.html">Dwell</a></dt>
|
||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IDwellDef.html">IDwellDef</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.FanucGoto.html">FanucGoto</a></dt>
|
||
<dd><p>Fanuc Custom Macro B GOTO record. Stamped on the host block by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html">FanucGotoSyntax</a> after the control-flow
|
||
decision has been made; produced earlier by
|
||
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html">FanucGotoParsingSyntax</a> as a parsing-stage
|
||
sub-section (<code>Parsing.FanucGoto</code>) carrying the raw captured fields.</p>
|
||
<p>
|
||
Two source forms map to the same shape:
|
||
<ul><li><code>GOTO <n></code> — unconditional jump. <a class="xref" href="Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_Condition">Condition</a> is null.</li><li><code>IF [<bool-expr>] GOTO <n></code> — conditional jump.
|
||
<a class="xref" href="Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_Condition">Condition</a> holds the expression text from inside the
|
||
brackets.</li></ul>
|
||
|
||
<p>
|
||
At parsing time <a class="xref" href="Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_N">N</a> is a raw token from the source — it may
|
||
be a literal (<code>"100"</code>), a variable reference (<code>"#1"</code>), or a
|
||
bracketed expression (<code>"#[#2+5]"</code>). <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html">VariableEvaluatorSyntax</a>
|
||
substitutes a resolved literal back into the same field in the
|
||
Evaluation bundle; <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html">FanucGotoSyntax</a> then
|
||
<code>int.TryParse</code>s the final string to produce an int target.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.FanucIfThen.html">FanucIfThen</a></dt>
|
||
<dd><p>Fanuc Custom Macro B <code>IF [<cond>] THEN <body></code>
|
||
single-block conditional record. Stamped on the host block by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html">FanucIfThenSyntax</a> after the gate
|
||
decision; produced earlier by
|
||
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html">FanucIfThenParsingSyntax</a> as a parsing-stage
|
||
sub-section (<code>Parsing.FanucIfThen</code>) carrying the raw captured fields
|
||
plus an internal <code>PendingAssignments</code> sub-object harvested from the
|
||
body text.</p>
|
||
<p>
|
||
Spec: <code>IF [bool-expr] THEN <stmt></code> executes <code><stmt></code>
|
||
only when the condition is truthy. Unlike <a class="xref" href="Hi.NcParsers.Keywords.FanucGoto.html">FanucGoto</a>'s
|
||
conditional form there is no jump — the body affects the current block
|
||
only, no source splice, no label scan, no iteration watchdog. The most
|
||
common body shape is a single Custom Macro B assignment
|
||
(<code>#nnn = <expr></code>); multiple assignments in one body are also
|
||
accepted and lifted together.
|
||
</p>
|
||
<p>
|
||
<a class="xref" href="Hi.NcParsers.Keywords.FanucIfThen.html#Hi_NcParsers_Keywords_FanucIfThen_Condition">Condition</a> is held as a string at parsing time so
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html">VariableEvaluatorSyntax</a>'s pass-2 tree walk can substitute
|
||
it to a numeric <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonvalue">JsonValue</a> in place;
|
||
the FanucIfThenSyntax tail then reads the resolved node polymorphically
|
||
via the same <code>ReadCondition</code> shape used by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html">FanucGotoSyntax</a>.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.FanucMacroCall.html">FanucMacroCall</a></dt>
|
||
<dd><p>One-shot custom-macro-call record written by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html">FanucMacroCallSyntax</a>. Lives on both the
|
||
<code>G65</code> host block (the caller) and every inlined block of the
|
||
macro body — so a cache-dump reader can land on any block inside the
|
||
macro and immediately see “this block belongs to a G65 call of
|
||
<a class="xref" href="Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_FileName">FileName</a> with these argument bindings” without back-walking
|
||
to find the host.</p>
|
||
<p>
|
||
Each inlined block additionally carries the resolved
|
||
<code>Vars.Local</code> <code>#1-#26</code> bindings derived from <a class="xref" href="Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_Args">Args</a>
|
||
(see <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html">FanucMacroArgumentMap</a>), so
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html">LocalVariableLookup</a>
|
||
resolves macro args in a single-block lookup. Frame isolation is
|
||
structural: caller blocks never have <code>Vars.Local</code> written, so
|
||
after the macro body ends, the next caller block reads <code>null</code>
|
||
for any <code>#1-#26</code> without any explicit frame marker.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.FanucModalMacro.html">FanucModalMacro</a></dt>
|
||
<dd><p>Modal-macro-call record left by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html">FanucModalMacroSyntax</a>. Carries Fanuc
|
||
<code>G66</code> setup state forward block-to-block until cancelled by
|
||
<code>G67</code>. The section is also written on the <code>G67</code> block itself
|
||
(with <a class="xref" href="Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_Term">Term</a> = <code>“G67”</code>) so cache dumps show the cancel
|
||
edge; subsequent blocks then carry no section at all.</p>
|
||
<p>
|
||
Per-block expansion of the modal call into an actual macro inline at
|
||
every positioning move is not yet implemented — a
|
||
<code>FanucModalMacro--NotExpanded</code> warning is emitted on the setup
|
||
block to flag the simulation gap. The setup state itself is captured
|
||
faithfully so external tooling can detect "this block sits inside a
|
||
G66 modal" via the carried section.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.FanucPathSmoothing.html">FanucPathSmoothing</a></dt>
|
||
<dd><p>Section data holder for <a class="xref" href="Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html">IFanucPathSmoothingDef</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.FanucProgramNumber.html">FanucProgramNumber</a></dt>
|
||
<dd><p>Fanuc-family program identifier header that follows a
|
||
<a class="xref" href="Hi.NcParsers.Keywords.TapeBoundary.html">TapeBoundary</a> line — e.g. <code>O1234</code> or
|
||
<code><O1234></code>. <a class="xref" href="Hi.NcParsers.Keywords.FanucProgramNumber.html#Hi_NcParsers_Keywords_FanucProgramNumber_Wrapper">Wrapper</a> records the surface form
|
||
so a parsed block can be emitted back to the original notation.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.Feedrate.html">Feedrate</a></dt>
|
||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IFeedrateDef.html">IFeedrateDef</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IndexNote.html">IndexNote</a></dt>
|
||
<dd><p>JSON-section data shape pairing a single-character address symbol
|
||
(e.g. <code>‘O’</code>, <code>‘N’</code>) with its numeric index, used to annotate
|
||
program/sequence numbers on an NC block.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<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>
|
||
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.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.MacroFrame.html">MacroFrame</a></dt>
|
||
<dd><p>Top-level integer marker stamped onto a <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">SyntaxPiece</a>'s JSON
|
||
to identify which call frame the block belongs to. Brand-agnostic by
|
||
design — written by <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html">FanucMacroCallSyntax</a>
|
||
today, reusable by any future call-inlining syntax (Fanuc <code>G66</code>
|
||
modal expansion, Heidenhain <code>LBL CALL</code>, …) that needs
|
||
local-variable isolation across call boundaries.</p>
|
||
<p>
|
||
Semantics: the value is an opaque id; only equality matters. Two
|
||
blocks with the same <a class="xref" href="Hi.NcParsers.Keywords.MacroFrame.html">MacroFrame</a> id share a call frame
|
||
(locals visible across them via single-step carry); two blocks with
|
||
different ids do not. The id <code>0</code> is reserved for the main
|
||
program frame and is returned by <a class="xref" href="Hi.NcParsers.Keywords.MacroFrame.html#Hi_NcParsers_Keywords_MacroFrame_Get_System_Text_Json_Nodes_JsonObject_">Get(JsonObject)</a> when the field is
|
||
absent — so a plain caller block needs no stamp and yet compares
|
||
distinct from any inlined frame.
|
||
</p>
|
||
<p>
|
||
Stored as a top-level JSON int (not an object section) so it stays
|
||
lightweight on every inlined block. Decoupled from
|
||
<a class="xref" href="Hi.NcParsers.Keywords.FanucMacroCall.html">FanucMacroCall</a>: that section is a diagnostic record of
|
||
the call (what file, what args), while <code>MacroFrame</code> is the
|
||
purely functional marker the local-variable I/O syntaxes consult.
|
||
</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.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">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.SpindleControl.html">SpindleControl</a></dt>
|
||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.ISpindleControlDef.html">ISpindleControlDef</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.SpindleOrientation.html">SpindleOrientation</a></dt>
|
||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.ISpindleOrientationDef.html">ISpindleOrientationDef</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.SpindleSpeed.html">SpindleSpeed</a></dt>
|
||
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.ISpindleSpeedDef.html">ISpindleSpeedDef</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.SubProgramCall.html">SubProgramCall</a></dt>
|
||
<dd><p>Subprogram call record left by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html">SubProgramCallSyntax</a> on the M98 /
|
||
M198 host block and on every inlined body block. The call itself
|
||
emits no motion act; this section is bookkeeping so cache dumps and
|
||
diagnostic readers can see "this block triggered (or sits inside)
|
||
an inline of program <code>P</code>".</p>
|
||
<p>
|
||
<code>M98</code> and <code>M198</code> share the exact same section shape. The
|
||
difference between them is purely environmental — which folder the
|
||
resolver looks in (<code>SubProgramFolderConfig.InternalFolder</code> vs
|
||
<code>ExternalFolder</code>) — and that lives on the dependency, not in
|
||
this JSON record.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.SubProgramReturn.html">SubProgramReturn</a></dt>
|
||
<dd><p>Subprogram return record left on the M99 host block by
|
||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html">SubProgramReturnSyntax</a>. Return blocks
|
||
produce no motion acts; this section makes the consumed M99 visible
|
||
in cache dumps and surfaces the <code>M99 P{seq}</code> jump decision.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.TapeBoundary.html">TapeBoundary</a></dt>
|
||
<dd><p>Tape leader / trailer line — the literal <code>%</code> that historically
|
||
marked the start and end of a punched paper-tape program. ISO-style
|
||
controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a
|
||
file-level boundary marker. Distinct from a comment: the controller
|
||
uses it as a tape/file delimiter, not as embedded operator text.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.TiltTransform.html">TiltTransform</a></dt>
|
||
<dd><p>Concrete class for <a class="xref" href="Hi.NcParsers.Keywords.ITiltTransformDef.html">ITiltTransformDef</a> section serialization.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ToolHeightCompensation.html">ToolHeightCompensation</a></dt>
|
||
<dd><p>Section key holder for <a class="xref" href="Hi.NcParsers.Keywords.IToolHeightCompensationDef.html">IToolHeightCompensationDef</a>.</p>
|
||
</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>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.Vars.html">Vars</a></dt>
|
||
<dd><p>JSON section schema for per-block variable storage. Each sub-property
|
||
names a sub-section that holds a <code>{ “#nnn”: value }</code> dictionary
|
||
keyed by Fanuc-style variable id.</p>
|
||
<p>
|
||
The sub-sections partition the variable space by lifetime:
|
||
</p>
|
||
<ul><li><a class="xref" href="Hi.NcParsers.Keywords.Vars.html#Hi_NcParsers_Keywords_Vars_Local">Local</a> — <code>#1-#33</code>, scope: macro call frame
|
||
(pushed/popped by G65 / G66 / M99).</li><li><a class="xref" href="Hi.NcParsers.Keywords.Vars.html#Hi_NcParsers_Keywords_Vars_Volatile">Volatile</a> — <code>#100-#499</code>, non-retained common;
|
||
carries block-to-block, cleared by <code>ProgramEndCleanSyntax</code> on M02 / M30.</li><li><a class="xref" href="Hi.NcParsers.Keywords.Vars.html#Hi_NcParsers_Keywords_Vars_SystemControl">SystemControl</a> — <code>#3000-#3999</code>, controller-side
|
||
system variables; offline-only round-trip record (real controller
|
||
effects such as clock reset / alarm trigger / message pause are not
|
||
simulated).</li></ul>
|
||
<p>
|
||
The property types are <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a> rather than strongly-typed
|
||
dictionaries because each sub-section's keys are dynamic Fanuc variable
|
||
ids (<code>#100</code>, <code>#5001</code>, …) discovered at parse time, not a fixed
|
||
schema. This class exists solely to give the section name and sub-keys
|
||
stable <code>nameof()</code> targets — instances are never constructed at
|
||
runtime.
|
||
</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.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">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ICompoundMotionDef.html">ICompoundMotionDef</a></dt>
|
||
<dd><p>Compound motion section definition for commands that produce
|
||
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.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)
|
||
(<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 <span class="xref">Hi.NcParsers.Semantics.CompoundMotionSemanticUtil</span> into
|
||
<a class="xref" href="Hi.Numerical.Acts.ActDelay.html">ActDelay</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html">IFanucPathSmoothingDef</a></dt>
|
||
<dd><p>Fanuc-specific path smoothing state written by
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html">FanucPathSmoothingSyntax</a>.</p>
|
||
<p>
|
||
Extends <a class="xref" href="Hi.NcParsers.Keywords.IPathSmoothingDef.html">IPathSmoothingDef</a> with the Fanuc G05.1 R argument
|
||
(precision / smoothness level number, R1..R10 mapping to controller-internal
|
||
tuning macro variables). Q is binary in current Fanuc firmware (Q0 disable /
|
||
Q1 enable), so <a class="xref" href="Hi.NcParsers.Keywords.IPathSmoothingDef.html#Hi_NcParsers_Keywords_IPathSmoothingDef_IsEnabled">IsEnabled</a> covers it directly
|
||
— no raw Q field is stored.
|
||
</p>
|
||
<p>
|
||
JSON section key remains <code>nameof(PathSmoothing)</code> so generic readers
|
||
(cache dumps, modal carry, UI) can cast to <a class="xref" href="Hi.NcParsers.Keywords.IPathSmoothingDef.html">IPathSmoothingDef</a>
|
||
across all controller brands; brand-specific readers cast to
|
||
<a class="xref" href="Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html">IFanucPathSmoothingDef</a> for the extra fields.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IFeedrateDef.html">IFeedrateDef</a></dt>
|
||
<dd><p>Feedrate state written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html">FeedrateSyntax</a>.
|
||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||
<p>
|
||
ISO standard: F command + G94 (per minute) / G95 (per revolution).
|
||
Supported by all major CNC brands.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IFlagsDef.html">IFlagsDef</a></dt>
|
||
<dd><p>JSON section schema describing the modal/non-modal flags that take effect
|
||
on an NC block. Each entry in <a class="xref" href="Hi.NcParsers.Keywords.IFlagsDef.html#Hi_NcParsers_Keywords_IFlagsDef_Flags">Flags</a> is a brand-specific
|
||
keyword recognized by the soft-NC runtime.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<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.IMotionEventDef.html">IMotionEventDef</a></dt>
|
||
<dd><p>One-shot motion event — present on every block whose source <em>programmed</em>
|
||
a motion command, regardless of whether the resulting displacement is non-zero.
|
||
A redundant <code>G01 X10</code> on a block already at X10 still gets a
|
||
<a class="xref" href="Hi.NcParsers.Keywords.MotionEvent.html">MotionEvent</a>; the 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>)
|
||
then early-return on <code>distance <= 0</code> and emit no
|
||
<a class="xref" href="Hi.Numerical.Acts.IAct.html">IAct</a>. NOT carried forward across blocks.</p>
|
||
<p>
|
||
Reason for the "programmed, not displaced" definition: Fanuc G66 modal
|
||
macro fires once per <em>programmed</em> motion command (per Fanuc spec —
|
||
no distance gate), so <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html">FanucModalMacroSyntax</a>.Expansion uses
|
||
<a class="xref" href="Hi.NcParsers.Keywords.MotionEvent.html">MotionEvent</a> presence as its trigger. Suppressing the section
|
||
on zero-distance moves would silently change G66 behaviour. The modal
|
||
sibling <a class="xref" href="Hi.NcParsers.Keywords.MotionState.html">MotionState</a> separately latches the Group-01 mode for
|
||
readers that only need to know "what G-code is active".
|
||
</p>
|
||
Property names are used as JSON keys via <code>nameof</code>.
|
||
</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>
|
||
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>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IParsingDef.html">IParsingDef</a></dt>
|
||
<dd><p>JSON section schema carrying the raw, brand-specific parsing trace for an
|
||
NC block. The <a class="xref" href="Hi.NcParsers.Keywords.IParsingDef.html#Hi_NcParsers_Keywords_IParsingDef_Parsing">Parsing</a> node holds intermediate parser output
|
||
used by downstream syntaxes and diagnostics.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IPathSmoothingDef.html">IPathSmoothingDef</a></dt>
|
||
<dd><p>Path smoothing state. The base interface is brand-agnostic; controller
|
||
brands extend it with their own argument fields (e.g.
|
||
<a class="xref" href="Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html">IFanucPathSmoothingDef</a> for Fanuc G05.1 R precision-level).
|
||
Fanuc-flavour writes are produced by
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html">FanucPathSmoothingSyntax</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><p>JSON section schema carrying the program-coordinate position commanded on
|
||
the current block. Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a>
|
||
before the <a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html#Hi_NcParsers_Keywords_ITransformationDef_ProgramToMcTransform">ProgramToMcTransform</a> chain
|
||
composes it into machine coordinates.</p>
|
||
</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>
|
||
arrays. Resolved by <span class="xref">Hi.NcParsers.Semantics.CompoundMotionSemanticUtil</span>
|
||
into <a class="xref" href="Hi.Numerical.Acts.ActSpindleDirection.html">ActSpindleDirection</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ISpindleOrientationDef.html">ISpindleOrientationDef</a></dt>
|
||
<dd><p>Oriented spindle stop item for use inside
|
||
<a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html#Hi_NcParsers_Keywords_CompoundMotion_ItemsKey">ItemsKey</a> arrays.
|
||
Commands the spindle to stop at a specific angular position (OSS).
|
||
Resolved by <span class="xref">Hi.NcParsers.Semantics.CompoundMotionSemanticUtil</span>
|
||
into <a class="xref" href="Hi.Numerical.Acts.ActSpindleOrientation.html">ActSpindleOrientation</a>.</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ISpindleSpeedDef.html">ISpindleSpeedDef</a></dt>
|
||
<dd><p>Spindle speed and direction state written by
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html">SpindleSpeedSyntax</a>.
|
||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||
<p>
|
||
ISO: S command for speed, M03/M04/M05 for direction.
|
||
Heidenhain: M3/M4/M5. Siemens: M3/M4/M5 or SPOS.
|
||
Direction is stored as the conventional <a class="xref" href="Hi.Numerical.SpindleDirection.html">SpindleDirection</a>
|
||
enum name (CW/CCW/STOP), not as brand-specific M-codes.
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.ITiltTransformDef.html">ITiltTransformDef</a></dt>
|
||
<dd><p>Tilt transform state written by tilt transform syntaxes.
|
||
Property names are used as JSON keys via <code>nameof</code>.</p>
|
||
<p>
|
||
Managed commands (ISO/Fanuc): G68 (2D rotation), G68.2 (tilted work plane), G69 (cancel).
|
||
Siemens equivalent: CYCLE800, ROT/AROT (handled by separate syntax).
|
||
Heidenhain equivalent: PLANE SPATIAL / PLANE RESET (handled by separate syntax).
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<dl class="jumplist">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IToolHeightCompensationDef.html">IToolHeightCompensationDef</a></dt>
|
||
<dd><p>Tool height compensation state written by
|
||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html">ToolHeightOffsetSyntax</a>.
|
||
Property names are used as JSON keys via <code>nameof</code>.
|
||
The JSON section can be deserialized to an instance implementing this interface.</p>
|
||
<p>
|
||
Managed commands (ISO/Fanuc): G43, G44, G49.
|
||
Fanuc extension: G43.4 (TCPM — parsed only in Fanuc syntax list).
|
||
Siemens equivalent: TRAFOOF/TRAORI (handled by separate syntax).
|
||
Heidenhain equivalent: TOOL CALL / M128/M129 (handled by separate syntax).
|
||
</p>
|
||
</dd>
|
||
</dl>
|
||
<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
|
||
<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">
|
||
<dt><a class="xref" href="Hi.NcParsers.Keywords.IUnparsedTextDef.html">IUnparsedTextDef</a></dt>
|
||
<dd><p>JSON section schema carrying the residual block text that was not consumed
|
||
by any registered syntax. Used for diagnostics and round-trip preservation.</p>
|
||
</dd>
|
||
</dl>
|
||
|
||
|
||
</article>
|
||
|
||
<div class="contribution d-print-none">
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
<div class="affix">
|
||
<nav id="affix"></nav>
|
||
</div>
|
||
</main>
|
||
|
||
<div class="container-xxl search-results" id="search-results"></div>
|
||
|
||
<footer class="border-top text-secondary">
|
||
<div class="container-xxl">
|
||
<div class="flex-fill">
|
||
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
</body>
|
||
</html>
|