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:
@@ -6,7 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="Class McAbcCyclicPathSyntax | HiAPI-C# 2025 ">
|
||||
|
||||
<meta name="description" content="Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses to determine which axes within need cyclic resolution. Falls back to hardcoded A/B/C if no is available. Must be placed after in . Two stages, mirroring : Root MachineCoordinateState — anchored at the previous block's modal rotary state..[*] — sequential walk through items, anchoring item 0 at the previous block's modal state and item i &gt; 0 at item i-1's post-cycle value (per-axis chain). Items without a rotary MachineCoordinateState are skipped. The items pass enables rotary motion (e.g. G28 ABC intermediate / home stages) to surface as motion segments rather than a single root-MC stamp.">
|
||||
<meta name="description" content="Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses to determine which axes within need cyclic resolution. Falls back to hardcoded A/B/C if no is available. Must be placed after in . Two stages, mirroring : Root MachineCoordinateState — anchored at the previous block's modal rotary state..[*] — sequential walk through items, anchoring item 0 at the previous block's modal state and item i &gt; 0 at item i-1's post-cycle value (per-axis chain). Items without a rotary MachineCoordinateState are skipped. The items pass enables rotary motion (e.g. G28 ABC intermediate / home stages) to surface as motion segments rather than a single root-MC stamp. Per-word directional override: a block-root entry (stamped by ) valued (Siemens ACP()) or (ACN()) swaps that axis's window for this block only: [anchor, anchor+360°) / (anchor-360°, anchor] instead of the default ±180° — the approach direction is forced even when it is the longer way around. A target congruent with the anchor (within an ULP-scale epsilon) keeps the anchor value verbatim — no move, never a spurious full turn, and no deg→rad→deg drift. (DC()) is the default window and needs no special path here. The override is read from the current block only (it is one-shot, never carried — deliberately unlike the modal RotaryWrap gate's one-step previous fallback) and applies to the root MC stage only, not to items (G28/G74/G75 expansions capture their words in sub-objects the stamping syntax never sees, so an override can only ever describe a root word). Directional/shortest entries keyed by an axis outside the modular set are reported as Coord-McAbc--003 — the promise cannot be honored there and silence would mis-read the program's intent; an entry with no anchor to resolve against (first rotary value in the stream) is reported as Coord-McAbc--004 and adopted unwrapped, matching the default path.">
|
||||
<link rel="icon" href="../img/HiAPI.favicon.ico">
|
||||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../public/main.css">
|
||||
@@ -114,6 +114,32 @@ The items pass enables rotary motion (e.g. G28 ABC intermediate /
|
||||
home stages) to surface as motion <a class="xref" href="Hi.Numerical.Acts.IAct.html">IAct</a>
|
||||
segments rather than a single root-MC stamp.
|
||||
|
||||
<p>
|
||||
Per-word directional override: a block-root
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.PositioningOverride.html">PositioningOverride</a> entry (stamped by
|
||||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensAcIcSyntax.html">SiemensAcIcSyntax</a>) valued
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_PositiveOnly">PositiveOnly</a> (Siemens <code>ACP()</code>) or
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_NegativeOnly">NegativeOnly</a> (<code>ACN()</code>) swaps that
|
||||
axis's window for this block only: [anchor, anchor+360°) /
|
||||
(anchor-360°, anchor] instead of the default ±180° — the approach
|
||||
direction is forced even when it is the longer way around. A target
|
||||
congruent with the anchor (within an ULP-scale epsilon) keeps the
|
||||
anchor value verbatim — no move, never a spurious full turn, and no
|
||||
deg→rad→deg drift. <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Shortest">Shortest</a> (<code>DC()</code>)
|
||||
is the default window and needs no special path here. The override
|
||||
is read from the current block only (it is one-shot, never carried —
|
||||
deliberately unlike the modal <code>RotaryWrap</code> gate's one-step
|
||||
previous fallback) and applies to the root MC stage only, not to
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html">CompoundMotion</a> items (G28/G74/G75 expansions capture
|
||||
their words in sub-objects the stamping syntax never sees, so an
|
||||
override can only ever describe a root word). Directional/shortest
|
||||
entries keyed by an axis outside the modular set are reported as
|
||||
<code>Coord-McAbc--003</code> — the promise cannot be honored there and
|
||||
silence would mis-read the program's intent; an entry with no anchor
|
||||
to resolve against (first rotary value in the stream) is reported as
|
||||
<code>Coord-McAbc--004</code> and adopted unwrapped, matching the default
|
||||
path.
|
||||
</p>
|
||||
</div>
|
||||
<div class="markdown conceptual"></div>
|
||||
|
||||
@@ -261,6 +287,55 @@ around 0°), so the test discriminates between chain and no-chain:
|
||||
]
|
||||
}
|
||||
}</code></pre>
|
||||
<p>
|
||||
<code>ACP</code> (PositiveOnly) forces the positive swing even though the
|
||||
shortest path from 0° to 270° is -90° (compare the default case
|
||||
above — same numbers, opposite outcome). The override section stays
|
||||
on the block (nothing consumes it away):
|
||||
</p>
|
||||
#Previous:
|
||||
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "B": 0 } }</code></pre>
|
||||
#BeforeBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"MachineCoordinateState": { "B": 270 },
|
||||
"PositioningOverride": { "B": "PositiveOnly" }
|
||||
}</code></pre>
|
||||
#AfterBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"MachineCoordinateState": { "B": 270 },
|
||||
"PositioningOverride": { "B": "PositiveOnly" }
|
||||
}</code></pre>
|
||||
<code>ACN</code> (NegativeOnly) mirror — target 90° from anchor 0° swings
|
||||
-270° instead of the shortest +90°:
|
||||
#Previous:
|
||||
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "B": 0 } }</code></pre>
|
||||
#BeforeBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"MachineCoordinateState": { "B": 90 },
|
||||
"PositioningOverride": { "B": "NegativeOnly" }
|
||||
}</code></pre>
|
||||
#AfterBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"MachineCoordinateState": { "B": -270 },
|
||||
"PositioningOverride": { "B": "NegativeOnly" }
|
||||
}</code></pre>
|
||||
Congruent target under a directional override — the raw anchor sits
|
||||
at 370° (e.g. after an earlier ACP long-way swing) and the ACN
|
||||
target 10° is the same physical position: no move, the anchor value
|
||||
is kept verbatim (the epsilon snap; without it, radian ULP noise
|
||||
would decide between "no move" and a spurious full -360° turn):
|
||||
#Previous:
|
||||
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "B": 370 } }</code></pre>
|
||||
#BeforeBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"MachineCoordinateState": { "B": 10 },
|
||||
"PositioningOverride": { "B": "NegativeOnly" }
|
||||
}</code></pre>
|
||||
#AfterBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"MachineCoordinateState": { "B": 370 },
|
||||
"PositioningOverride": { "B": "NegativeOnly" }
|
||||
}</code></pre>
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user