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 McAbcSyntax | HiAPI-C# 2025 ">
|
||||
|
||||
<meta name="description" content="Writes rotary axis values (A/B/C) into from and modal lookback. Only active when declares rotary axes. Works for both 3+2-axis (no ) and simultaneous 5-axis configurations. This syntax is intentionally ABC-only. When the block is rotary-only (no ProgramXyz, e.g. G00 A30.) the section is created with ABC but without X/Y/Z. — placed after — copies X/Y/Z from the previous block's to finish the section. Splitting the XYZ fill out lets this syntax run before (and before ) without accidentally filling X/Y/Z from prev and thereby short-circuiting . Missing rotary axes are filled from previous lookback, unless the current section already has the value (e.g., from ). Values are stored in degrees (matching ). Must be placed before so syntaxes that need the current-block ABC to compute transforms (e.g. ) can see it; and before and .">
|
||||
<meta name="description" content="Writes rotary axis values (A/B/C) into from and modal lookback. Only active when declares rotary axes. Works for both 3+2-axis (no ) and simultaneous 5-axis configurations. This syntax is intentionally ABC-only. When the block is rotary-only (no ProgramXyz, e.g. G00 A30.) the section is created with ABC but without X/Y/Z. — placed after — copies X/Y/Z from the previous block's to finish the section. Splitting the XYZ fill out lets this syntax run before (and before ) without accidentally filling X/Y/Z from prev and thereby short-circuiting . Missing rotary axes are filled from previous lookback, unless the current section already has the value (e.g., from ). Values are stored in degrees (matching ). Per-word override: a block-root section (written by for the Siemens AC()/IC() coordinate functions) marks a rotary word : the parsed value is then added to the previous modal value of that axis (previous MachineCoordinateState lookback, falling back to a value already present in the current section, then 0) instead of being written as an absolute angle. The accumulated raw degrees stay monotonic across iterations — each per-block step is well inside the ±180° window, so the tail-pass keeps it as net rotation instead of re-normalizing it away. An entry (from AC()) matches the default write and needs no special path — and so, deliberately, do the rotary-family entries (DC()) / (ACP()) / (ACN()): this syntax writes the raw absolute target and the shortest/directional swing is resolved by the tail-pass, which owns the wrap math. Brands that never write the section keep the exact legacy behavior. Coded-position overrides (Siemens CAC()/CIC()/CDC()/CACP()/CACN()) carry an indexing position number instead of an angle: the number is resolved through via and the override entry is rewritten to the plain vocabulary ( / / / — a cyclic CIC keeps its programmed direction through the directional values) before the tail-pass runs, so the tail-pass never sees a coded value. A failed resolve (invalid number, missing table) reports an error and holds the axis at its previous value. Must be placed before so syntaxes that need the current-block ABC to compute transforms (e.g. ) can see it; and before and .">
|
||||
<link rel="icon" href="../img/HiAPI.favicon.ico">
|
||||
<link rel="stylesheet" href="../public/docfx.min.css">
|
||||
<link rel="stylesheet" href="../public/main.css">
|
||||
@@ -125,6 +125,46 @@ unless the current section already has the value
|
||||
Values are stored in degrees (matching <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html">McAbcCyclicPathSyntax</a>).
|
||||
</p>
|
||||
<p>
|
||||
Per-word override: a block-root
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.PositioningOverride.html">PositioningOverride</a> section (written by
|
||||
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensAcIcSyntax.html">SiemensAcIcSyntax</a> for the
|
||||
Siemens <code>AC()</code>/<code>IC()</code> coordinate functions) marks a rotary
|
||||
word <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Incremental">Incremental</a>: the parsed value is then
|
||||
added to the previous modal value of that axis (previous
|
||||
<code>MachineCoordinateState</code> lookback, falling back to a value
|
||||
already present in the current section, then 0) instead of being
|
||||
written as an absolute angle. The accumulated raw degrees stay
|
||||
monotonic across iterations — each per-block step is well inside the
|
||||
±180° window, so the <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html">McAbcCyclicPathSyntax</a> tail-pass
|
||||
keeps it as net rotation instead of re-normalizing it away. An
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Absolute">Absolute</a> entry (from <code>AC()</code>) matches
|
||||
the default write and needs no special path — and so, deliberately,
|
||||
do the rotary-family entries <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Shortest">Shortest</a>
|
||||
(<code>DC()</code>) / <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_PositiveOnly">PositiveOnly</a>
|
||||
(<code>ACP()</code>) / <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_NegativeOnly">NegativeOnly</a>
|
||||
(<code>ACN()</code>): this syntax writes the raw absolute target and the
|
||||
shortest/directional swing is resolved by the
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html">McAbcCyclicPathSyntax</a> tail-pass, which owns the wrap
|
||||
math. Brands that never write the section keep the exact legacy
|
||||
behavior.
|
||||
</p>
|
||||
<p>
|
||||
Coded-position overrides (Siemens
|
||||
<code>CAC()</code>/<code>CIC()</code>/<code>CDC()</code>/<code>CACP()</code>/<code>CACN()</code>)
|
||||
carry an indexing position <b>number</b> instead of an angle: the
|
||||
number is resolved through <a class="xref" href="Hi.NcParsers.Dependencys.IIndexingPositionConfig.html">IIndexingPositionConfig</a> via
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CodedPositionUtil.html#Hi_NcParsers_LogicSyntaxs_CodedPositionUtil_TryResolveCodedTarget_Hi_NcParsers_Dependencys_IIndexingPositionConfig_System_String_System_String_System_Double_System_Double_Hi_NcParsers_ISentenceCarrier_Hi_NcParsers_NcDiagnosticProgress_System_Double__System_String__">TryResolveCodedTarget(IIndexingPositionConfig, string, string, double, double, ISentenceCarrier, NcDiagnosticProgress, out double, out string)</a> and the override
|
||||
entry is rewritten to the plain vocabulary
|
||||
(<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_Shortest">Shortest</a> /
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_PositiveOnly">PositiveOnly</a> /
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_NegativeOnly">NegativeOnly</a> — a cyclic <code>CIC</code> keeps
|
||||
its programmed direction through the directional values) before the
|
||||
tail-pass runs, so the tail-pass never sees a coded value. A failed
|
||||
resolve (invalid number, missing table) reports an error and holds
|
||||
the axis at its previous value.
|
||||
</p>
|
||||
<p>
|
||||
Must be placed <b>before</b> <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html">McXyzSyntax</a> so syntaxes
|
||||
that need the current-block ABC to compute transforms
|
||||
(e.g. <a class="xref" href="Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html">G43p4RtcpSyntax</a>) can see it; and <b>before</b>
|
||||
@@ -241,6 +281,54 @@ per-axis backward lookback (<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPie
|
||||
<pre><code class="lang-csharp">{ "Parsing": { "B": 30 } }</code></pre>
|
||||
#AfterBuild:
|
||||
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "B": 30, "C": 0 } }</code></pre>
|
||||
Per-word incremental override (the Siemens <code>C=IC(...)</code> shape
|
||||
after the unwrap + evaluation stages) — the parsed 21.5 is added onto
|
||||
the previous modal C instead of overwriting it; B has no override
|
||||
entry and fills from lookback as usual:
|
||||
#Previous:
|
||||
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "B": 10, "C": 40 } }</code></pre>
|
||||
#BeforeBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"PositioningOverride": { "C": "Incremental" },
|
||||
"Parsing": { "C": 21.5 }
|
||||
}</code></pre>
|
||||
#AfterBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"PositioningOverride": { "C": "Incremental" },
|
||||
"MachineCoordinateState": { "B": 10, "C": 61.5 }
|
||||
}</code></pre>
|
||||
Coded-position absolute (the Siemens <code>C=CAC(3)</code> shape after the
|
||||
unwrap + evaluation stages). The case injects a
|
||||
<code>SiemensMachineDataTable</code> declaring C rotary and assigned to
|
||||
indexing table 1 = <code>[0, 90, 180, 270]</code>: position number 3
|
||||
resolves to 180° and the override entry is rewritten to
|
||||
<code>Absolute</code> for the tail-pass:
|
||||
#BeforeBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"PositioningOverride": { "C": "CodedAbsolute" },
|
||||
"Parsing": { "C": 3 }
|
||||
}</code></pre>
|
||||
#AfterBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"PositioningOverride": { "C": "Absolute" },
|
||||
"MachineCoordinateState": { "C": 180 }
|
||||
}</code></pre>
|
||||
Coded-position incremental with the same table — from 270° (position
|
||||
4), advancing 2 positions wraps the 4-position cycle to position 2
|
||||
(90°), and the positive count becomes a <code>PositiveOnly</code> approach
|
||||
so the swing keeps the programmed direction:
|
||||
#Previous:
|
||||
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "C": 270 } }</code></pre>
|
||||
#BeforeBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"PositioningOverride": { "C": "CodedIncremental" },
|
||||
"Parsing": { "C": 2 }
|
||||
}</code></pre>
|
||||
#AfterBuild:
|
||||
<pre><code class="lang-csharp">{
|
||||
"PositioningOverride": { "C": "PositiveOnly" },
|
||||
"MachineCoordinateState": { "C": 90 }
|
||||
}</code></pre>
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user