Archived
deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.
This commit is contained in:
+101
-16
@@ -6,7 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Class MachineCoordSelectSyntax | HiAPI-C# 2025 ">
|
||||
|
||||
<meta name="description" content="Handles G53 (machine coordinate selection) — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, G53 is ignored per ISO standard. Must be placed before in the syntax chain. When G53 is active, this syntax consumes X/Y/Z from and writes directly, preventing from processing them as program coordinates.">
|
||||
<meta name="description" content="Handles machine coordinate selection — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, the code is ignored per ISO standard. Defaults to ISO G53. Brands with additional one-shot machine-coordinate codes widen — the Siemens preset adds G153 and SUPA (both suppress every active frame for one block; in this pipeline all of those reduce to "bypass the composed ", which the ProgramXyz back-derivation below already models). The matched code is stamped verbatim into for bidirectional source recovery. Rotary words on the same block (e.g. SUPA G0 B0) are left to — same behavior as ISO G53, where rotary axes flow through the normal rotary path. Must be placed before in the syntax chain. When a supported code is active, this syntax consumes X/Y/Z from and writes directly, preventing from processing them as program coordinates.">
|
||||
<link rel="icon" href="../img/HiAPI.favicon.ico">
|
||||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../public/main.css">
|
||||
@@ -97,15 +97,28 @@ Class MachineCoordSelectSyntax
|
||||
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
|
||||
</div>
|
||||
|
||||
<div class="markdown summary"><p>Handles G53 (machine coordinate selection) — non-modal, one-shot.
|
||||
<div class="markdown summary"><p>Handles machine coordinate selection — non-modal, one-shot.
|
||||
The axis values (X/Y/Z) in the block are interpreted as machine
|
||||
coordinates, bypassing all work offsets, local coordinates,
|
||||
tool height compensation, and coordinate rotations.
|
||||
If G91 (incremental) is active, G53 is ignored per ISO standard.</p>
|
||||
If G91 (incremental) is active, the code is ignored per ISO standard.</p>
|
||||
<p>
|
||||
Defaults to ISO <code>G53</code>. Brands with additional one-shot
|
||||
machine-coordinate codes widen <a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html#Hi_NcParsers_LogicSyntaxs_MachineCoordSelectSyntax_SupportedCodes">SupportedCodes</a> — the
|
||||
Siemens preset adds <code>G153</code> and <code>SUPA</code> (both suppress every
|
||||
active frame for one block; in this pipeline all of those reduce to
|
||||
"bypass the composed <a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html#Hi_NcParsers_Keywords_ITransformationDef_ProgramToMcTransform">ProgramToMcTransform</a>",
|
||||
which the ProgramXyz back-derivation below already models). The
|
||||
matched code is stamped verbatim into
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html#Hi_NcParsers_Keywords_IMotionEventDef_Term">Term</a> for bidirectional source recovery.
|
||||
Rotary words on the same block (e.g. <code>SUPA G0 B0</code>) are left to
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> — same behavior as ISO G53, where rotary
|
||||
axes flow through the normal rotary path.
|
||||
</p>
|
||||
<p>
|
||||
Must be placed <b>before</b> <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a> in the
|
||||
syntax chain. When G53 is active, this syntax consumes X/Y/Z from
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IParsingDef.html#Hi_NcParsers_Keywords_IParsingDef_Parsing">Parsing</a> and writes
|
||||
syntax chain. When a supported code is active, this syntax consumes
|
||||
X/Y/Z from <a class="xref" href="Hi.NcParsers.Keywords.IParsingDef.html#Hi_NcParsers_Keywords_IParsingDef_Parsing">Parsing</a> and writes
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateStateDef_MachineCoordinateState">MachineCoordinateState</a> directly,
|
||||
preventing <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a> from processing them
|
||||
as program coordinates.
|
||||
@@ -192,18 +205,27 @@ as program coordinates.
|
||||
|
||||
|
||||
<h2 id="Hi_NcParsers_LogicSyntaxs_MachineCoordSelectSyntax_examples">Examples</h2>
|
||||
<p>G53 with full XYZ on a first block (no <code>#Previous:</code>) — <code>FindPreviousMc</code>
|
||||
falls back to <code>Vec3d.Zero</code>, transform defaults to identity, so
|
||||
<code>ProgramXyz</code> equals <code>MachineCoordinateState</code>:
|
||||
<p>G53 with full XYZ on a first block (no <code>#Previous:</code>) —
|
||||
<code>FindPreviousMc</code> falls back to <code>Vec3d.Zero</code>, transform
|
||||
defaults to identity, so <code>ProgramXyz</code> equals
|
||||
<code>MachineCoordinateState</code>. A non-modal <code>MotionEvent</code> is
|
||||
stamped with <code>Term: “G53”</code> for bidirectional source recovery
|
||||
(per the precedence rule on <a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html#Hi_NcParsers_Keywords_IMotionEventDef_Term">Term</a>);
|
||||
<code>IsRapid</code> inherits from the modal
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.MotionState.html">MotionState</a>.<a class="xref" href="Hi.NcParsers.Keywords.IMotionStateDef.html#Hi_NcParsers_Keywords_IMotionStateDef_Term">Term</a>
|
||||
(G00 → true, G01/G02/G03 → false, none → true as the conservative
|
||||
“safe rapid” default common in practice):
|
||||
#BeforeBuild:</p>
|
||||
<pre><code class="lang-csharp">{ "Parsing": { "Flags": ["G53"], "X": 10, "Y": 20, "Z": 30 } }</code></pre>
|
||||
<p>#AfterBuild:</p>
|
||||
<pre><code class="lang-csharp">{
|
||||
"MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 },
|
||||
"ProgramXyz": { "X": 10, "Y": 20, "Z": 30 }
|
||||
"ProgramXyz": { "X": 10, "Y": 20, "Z": 30 },
|
||||
"MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G53" }
|
||||
}</code></pre>
|
||||
<p>G53 with only Z specified — <code>FindPreviousMc</code> picks up X/Y from the
|
||||
previous block's <code>MachineCoordinateState</code>; Z is overwritten:
|
||||
<p>G53 with only Z specified — <code>FindPreviousMc</code> picks up X/Y from
|
||||
the previous block's <code>MachineCoordinateState</code>; Z is overwritten;
|
||||
<code>MotionEvent</code> stamped as above:
|
||||
#Previous:</p>
|
||||
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "X": 100, "Y": 50, "Z": -200 } }</code></pre>
|
||||
<p>#BeforeBuild:</p>
|
||||
@@ -211,19 +233,46 @@ previous block's <code>MachineCoordinateState</code>; Z is overwritten:
|
||||
<p>#AfterBuild:</p>
|
||||
<pre><code class="lang-csharp">{
|
||||
"MachineCoordinateState": { "X": 100, "Y": 50, "Z": 0 },
|
||||
"ProgramXyz": { "X": 100, "Y": 50, "Z": 0 }
|
||||
"ProgramXyz": { "X": 100, "Y": 50, "Z": 0 },
|
||||
"MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G53" }
|
||||
}</code></pre>
|
||||
<p>G91 active on the same block → G53 is ignored per ISO standard; nothing
|
||||
is consumed and no machine-state section is written:
|
||||
<p>G91 active on the same block — G53 incompatible with G91 incremental
|
||||
positioning per ISO standard. Syntax emits validation error
|
||||
<code>Coord-MachCoord–006</code>, consumes the G53 flag and any X/Y/Z,
|
||||
and writes no machine state. <code>Positioning</code> section preserved:
|
||||
#BeforeBuild:</p>
|
||||
<pre><code class="lang-csharp">{
|
||||
"Parsing": { "Flags": ["G53"], "X": 10 },
|
||||
"Positioning": { "Term": "G91" }
|
||||
}</code></pre>
|
||||
<p>#AfterBuild:</p>
|
||||
<pre><code class="lang-csharp">{ "Positioning": { "Term": "G91" } }</code></pre>
|
||||
<p>Standalone G53 with no X/Y/Z — G53 by itself has no destination
|
||||
to interpret as machine coordinates, so the syntax emits validation
|
||||
error <code>Coord-MachCoord–007</code> and consumes the flag without
|
||||
writing machine state:
|
||||
#BeforeBuild:</p>
|
||||
<pre><code class="lang-csharp">{ "Parsing": { "Flags": ["G53"] } }</code></pre>
|
||||
<p>#AfterBuild:</p>
|
||||
<pre><code class="lang-csharp">{}</code></pre>
|
||||
<p>Siemens SUPA retract (SUT configured with
|
||||
<code>SupportedCodes = [“G53”, “G153”, “SUPA”]</code>) — corpus shape
|
||||
<code>N5 SUPA G0 Z1150 D0</code>: the matched code is stamped verbatim as
|
||||
<code>Term</code>, missing X/Y fill from the previous machine position,
|
||||
the motion-mode flag is claimed into the modal <code>MotionState</code>
|
||||
(LinearMotionSyntax skips this block, so nobody else would), and the
|
||||
<code>D</code> word stays in <code>Parsing</code> for its own consumer:
|
||||
#Previous:</p>
|
||||
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "X": 500, "Y": 1000, "Z": -30 } }</code></pre>
|
||||
<p>#BeforeBuild:</p>
|
||||
<pre><code class="lang-csharp">{ "Parsing": { "Flags": ["SUPA", "G00"], "Z": 1150, "D": 0 } }</code></pre>
|
||||
<p>#AfterBuild:</p>
|
||||
<pre><code class="lang-csharp">{
|
||||
"Parsing": { "Flags": ["G53"], "X": 10 },
|
||||
"Positioning": { "Term": "G91" }
|
||||
"Parsing": { "D": 0 },
|
||||
"MachineCoordinateState": { "X": 500, "Y": 1000, "Z": 1150 },
|
||||
"ProgramXyz": { "X": 500, "Y": 1000, "Z": 1150 },
|
||||
"MotionState": { "Term": "G00" },
|
||||
"MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "SUPA" }
|
||||
}</code></pre>
|
||||
|
||||
|
||||
@@ -329,6 +378,42 @@ is consumed and no machine-state section is written:
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_LogicSyntaxs_MachineCoordSelectSyntax_SupportedCodes_" data-uid="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.SupportedCodes*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_LogicSyntaxs_MachineCoordSelectSyntax_SupportedCodes" data-uid="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.SupportedCodes">
|
||||
SupportedCodes
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>One-shot machine-coordinate codes this syntax consumes; defaults to
|
||||
ISO G53. The Siemens preset widens the list to G53 + G153 + SUPA.
|
||||
The first list entry present in <code>Parsing.Flags</code> is stamped as
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html#Hi_NcParsers_Keywords_IMotionEventDef_Term">Term</a>; every listed code present on the
|
||||
block is consumed so none re-triggers the unconsumed-parsing warning.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public List<string> SupportedCodes { get; set; }</code></pre>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section">Property Value</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a><<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_LogicSyntaxs_MachineCoordSelectSyntax_XName_" data-uid="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.XName*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_LogicSyntaxs_MachineCoordSelectSyntax_XName" data-uid="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.XName">
|
||||
|
||||
Reference in New Issue
Block a user