This commit is contained in:
2026-09-11 03:46:11 +08:00
parent 45b9f9ed5d
commit b7f55aa631
114 changed files with 3646 additions and 576 deletions
@@ -3493,7 +3493,10 @@ only after mutating the runtime face outside the service.</p>
</h3>
<div class="markdown level1 summary"><p>Updates the ideal milling tool offset table based on the current tool house configuration.</p>
<div class="markdown level1 summary"><p>Updates the ideal milling tool offset table based on the current tool
house configuration. The radius column follows the project's
<a class="xref" href="Hi.MachiningProcs.MachiningActRunnerConfig.html#Hi_MachiningProcs_MachiningActRunnerConfig_RadiusOffsetBasis">RadiusOffsetBasis</a> so a
zero-based (tool-centre path) program keeps its D rows at wear only.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -591,6 +591,46 @@ from the tool house geometry before simulation.</p>
<a id="Hi_MachiningProcs_MachiningActRunnerConfig_RadiusOffsetBasis_" data-uid="Hi.MachiningProcs.MachiningActRunnerConfig.RadiusOffsetBasis*"></a>
<h3 id="Hi_MachiningProcs_MachiningActRunnerConfig_RadiusOffsetBasis" data-uid="Hi.MachiningProcs.MachiningActRunnerConfig.RadiusOffsetBasis">
RadiusOffsetBasis
</h3>
<div class="markdown level1 summary"><p>Gets or sets which cutter-radius compensation strategy the NC program
was posted for. Decides what a tool-house refresh (the play-time
refresh under <a class="xref" href="Hi.MachiningProcs.MachiningActRunnerConfig.html#Hi_MachiningProcs_MachiningActRunnerConfig_IsIdealOffsetDependentOnToolHouse">IsIdealOffsetDependentOnToolHouse</a> and the
explicit refresh commands) writes into the ideal radius of a milling
cutter's offset row: the cutter's max profile radius under
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html#Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_CutterRadius">CutterRadius</a>, 0 under
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html#Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_ZeroBased">ZeroBased</a>. Heights and wear are
unaffected. Project level because it changes the simulated path.
Default <a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html#Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_CutterRadius">CutterRadius</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public RadiusOffsetBasis RadiusOffsetBasis { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html">RadiusOffsetBasis</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_MachiningActRunnerConfig_XName_" data-uid="Hi.MachiningProcs.MachiningActRunnerConfig.XName*"></a>
<h3 id="Hi_MachiningProcs_MachiningActRunnerConfig_XName" data-uid="Hi.MachiningProcs.MachiningActRunnerConfig.XName">
@@ -2479,7 +2479,7 @@ geometry — the settings that used to surface only as an opaque per-step
<a class="xref" href="Hi.Geom.ExtendedCylinder.html#Hi_Geom_ExtendedCylinder_FullLength">FullLength</a> is below the flute height, so the
shank solid inverts and <span class="xref">Hi.Milling.Cutters.MillingCutter.GetShankThermalZrList()</span> cannot build).
Returns <code>(Id, Message)</code> pairs following the structured-id convention of
the <code>IMessage</code> channel (e.g. <code>Cutter-UpperBeam&ndash;BelowFluteHeight</code>);
the <code>IMessage</code> channel (e.g. <code>Cutter-UpperBeam&ndash;ExtendedCylinderFullLengthTooShort</code>);
empty when no upper beam is configured (a legal state — physics runs without
a shank) or the beam is consistent. Shared by the physics runner (tool-change
<code>ConfigurationError</code>) and the web API (post-edit validation warnings).</p>
@@ -0,0 +1,200 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Enum RadiusOffsetBasis | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Enum RadiusOffsetBasis | HiAPI-C# 2025 ">
<meta name="description" content="Which cutter-radius compensation strategy the NC program was posted for — decides what a tool-house refresh writes into the radius (D) column of a tool offset table. The height (H) column is refreshed the same way under both strategies. This is an output-affecting, project-level choice: the user or agent picks it after confirming how the NC program was posted, because a refresh under the wrong basis silently offsets the tool by a full cutter radius.">
<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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.Dependencys.Generic.RadiusOffsetBasis">
<h1 id="Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis" data-uid="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis" class="text-break">
Enum RadiusOffsetBasis
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcParsers.html">NcParsers</a>.<a class="xref" href="Hi.NcParsers.Dependencys.html">Dependencys</a>.<a class="xref" href="Hi.NcParsers.Dependencys.Generic.html">Generic</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Which cutter-radius compensation strategy the NC program was posted
for — decides what a tool-house refresh writes into the radius
(D) column of a tool offset table. The height (H) column is refreshed
the same way under both strategies. This is an output-affecting,
project-level choice: the user or agent picks it after confirming how
the NC program was posted, because a refresh under the wrong basis
silently offsets the tool by a full cutter radius.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public enum RadiusOffsetBasis</code></pre>
</div>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.MaskUtil.html#Hi_Common_MaskUtil_GetMaskedValue__1___0___0_System_Boolean_">MaskUtil.GetMaskedValue&lt;T&gt;(T, T, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.MaskUtil.html#Hi_Common_MaskUtil_SetMask__1___0____0_System_Boolean_">MaskUtil.SetMask&lt;T&gt;(ref T, T, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 id="fields">Fields
</h2>
<dl class="parameters">
<dt id="Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_CutterRadius"><code>CutterRadius = 0</code></dt>
<dd><p>Cutter-radius: the NC contour is the part contour, and the
controller offsets it by the D row at run time. The D row holds the
cutter's geometry radius plus wear, so a tool-house refresh writes
the cutter profile's max radius into the ideal radius and leaves
the radial wear untouched. This is the default and the only
behaviour before the basis existed.</p>
</dd>
<dt id="Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_ZeroBased"><code>ZeroBased = 1</code></dt>
<dd><p>Zero-based: the NC path is already the tool-centre path (CAM
applied the offset), while <code>G41</code>/<code>G42 D..</code> stays in the
program so the operator can dial in wear. The D row therefore holds
the wear only, and a tool-house refresh writes 0 into the ideal
radius and leaves the radial wear untouched. Refreshing such a
program under <a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html#Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_CutterRadius">CutterRadius</a> would push the tool a full
cutter radius into the wall.</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>
@@ -619,16 +619,18 @@ no configured row (see <a class="xref" href="Hi.NcParsers.Dependencys.IToolOffse
<a id="Hi_NcParsers_Dependencys_Generic_ToolOffsetTable_UpdateIdealByToolHouse_" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.UpdateIdealByToolHouse*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_ToolOffsetTable_UpdateIdealByToolHouse_Hi_Machining_MachiningToolHouse_" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.UpdateIdealByToolHouse(Hi.Machining.MachiningToolHouse)">
UpdateIdealByToolHouse(MachiningToolHouse)
<h3 id="Hi_NcParsers_Dependencys_Generic_ToolOffsetTable_UpdateIdealByToolHouse_Hi_Machining_MachiningToolHouse_Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.UpdateIdealByToolHouse(Hi.Machining.MachiningToolHouse,Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis)">
UpdateIdealByToolHouse(MachiningToolHouse, RadiusOffsetBasis)
</h3>
<div class="markdown level1 summary"><p>Refreshes the ideal (geometry) components from the tool house — ideal
height = the tool's spindle-buckle→tool-tip length, ideal radius = the
cutter profile's max radius — preserving accumulated wear, and drops
rows whose tool id no longer exists in the house. Offset number maps
1:1 to the tool id. Mirrors the HardNc
height = the tool's spindle-buckle→tool-tip length, ideal radius of a
milling-cutter row = the cutter profile's max radius under
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html#Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_CutterRadius">CutterRadius</a> or 0 under
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html#Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_ZeroBased">ZeroBased</a> — preserving accumulated
wear, and drops rows whose tool id no longer exists in the house.
Offset number maps 1:1 to the tool id. Mirrors the HardNc
<code>MillingToolOffsetTable.UpdateIdealMillingToolOffsetTableByToolHouse</code>
semantics so H/D offsets follow the tool house when the project's
<code>IsIdealOffsetDependentOnToolHouse</code> is on.</p>
@@ -636,13 +638,18 @@ semantics so H/D offsets follow the tool house when the project's
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void UpdateIdealByToolHouse(MachiningToolHouse toolHouse)</code></pre>
<pre><code class="lang-csharp hljs">public void UpdateIdealByToolHouse(MachiningToolHouse toolHouse, RadiusOffsetBasis radiusBasis = RadiusOffsetBasis.CutterRadius)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>toolHouse</code> <a class="xref" href="Hi.Machining.MachiningToolHouse.html">MachiningToolHouse</a></dt>
<dd><p>Source tool house; no-op when null.</p>
</dd>
<dt><code>radiusBasis</code> <a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html">RadiusOffsetBasis</a></dt>
<dd><p>The project's cutter-radius compensation
strategy; decides the ideal radius written for milling-cutter rows.
Heights are refreshed the same way under both.</p>
</dd>
</dl>
@@ -214,6 +214,20 @@ holds only this proxy, never the offset data.</p>
Not a standard Fanuc parameter — in real Fanuc, tool change motion
is programmed in the macro program (O9006).
Each axis value: a position to move to, or <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double.nan">NaN</a> to stay.</p>
</dd>
</dl>
<h3 id="enums">
Enums
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html">RadiusOffsetBasis</a></dt>
<dd><p>Which cutter-radius compensation strategy the NC program was posted
for — decides what a tool-house refresh writes into the radius
(D) column of a tool offset table. The height (H) column is refreshed
the same way under both strategies. This is an output-affecting,
project-level choice: the user or agent picks it after confirming how
the NC program was posted, because a refresh under the wrong basis
silently offsets the tool by a full cutter radius.</p>
</dd>
</dl>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainToolChangeSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Heidenhain-specific: consumes the Parsing[&amp;ldquo;TOOL CALL&amp;rdquo;] record (written by ) into the shared section so fires the tooling act. A klartext TOOL CALL always performs the change — no separate M06 trigger exists — so is always true with Term = &amp;ldquo;TOOL CALL&amp;rdquo;. The spindle-speed word (S) is relocated to the root of so the shared — which must run after this syntax in the Logic bundle — records it modally. Numeric tool ids are written as ints (the act chain is int-keyed); non-numeric ids stay strings and resolve (or warn) at the semantic layer. P0 limits recorded as diagnostics: non-Z tool axis (ToolChange--AxisUnsupported), non-zero DL/DR deltas (ToolChange--DeltaUnsupported; zero deltas are consumed silently), and a TOOL CALL without a tool id (ToolChange--MissingToolId, e.g. a variable tool number the parser could not capture). Known P2 limitation: a quoted tool NAME that happens to spell a Q token (TOOL CALL &quot;Q1&quot; Z) loses its quotes at capture, so the evaluator substitutes the Q parameter&#39;s value and the numeric branch below treats it as a tool number. Corpus-zero (real names are &quot;B40R&quot;-style); fixing it needs the capture to preserve the quoted-ness, which would change the P0-pinned record shape.">
<meta name="description" content="Heidenhain-specific: consumes the Parsing[&amp;ldquo;TOOL CALL&amp;rdquo;] record (written by ) into the shared section so fires the tooling act. A klartext TOOL CALL always performs the change — no separate M06 trigger exists — so is always true with Term = &amp;ldquo;TOOL CALL&amp;rdquo;. The spindle-speed word (S) is relocated to the root of so the shared — which must run after this syntax in the Logic bundle — records it modally. Numeric tool ids are written as ints (the act chain is int-keyed); non-numeric ids stay strings and resolve (or warn) at the semantic layer. P0 limits recorded as diagnostics: non-Z tool axis (ToolChange--AxisUnsupported), non-zero DL/DR deltas (ToolChange--DeltaUnsupported; zero deltas are consumed silently, and a delta that is not a literal value is ignored as ToolChange--DeltaNotLiteral), and a TOOL CALL without a tool id (ToolChange--MissingToolId, e.g. a variable tool number the parser could not capture). Known P2 limitation: a quoted tool NAME that happens to spell a Q token (TOOL CALL &quot;Q1&quot; Z) loses its quotes at capture, so the evaluator substitutes the Q parameter&#39;s value and the numeric branch below treats it as a tool number. Corpus-zero (real names are &quot;B40R&quot;-style); fixing it needs the capture to preserve the quoted-ness, which would change the P0-pinned record shape.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -116,7 +116,8 @@ resolve (or warn) at the semantic layer.
P0 limits recorded as diagnostics: non-Z tool axis
(<code>ToolChange--AxisUnsupported</code>), non-zero DL/DR deltas
(<code>ToolChange--DeltaUnsupported</code>; zero deltas are consumed
silently), and a TOOL CALL without a tool id
silently, and a delta that is not a literal value is ignored as
<code>ToolChange--DeltaNotLiteral</code>), and a TOOL CALL without a tool id
(<code>ToolChange--MissingToolId</code>, e.g. a variable tool number the
parser could not capture).
</p>
@@ -619,7 +619,8 @@ resolve (or warn) at the semantic layer.
P0 limits recorded as diagnostics: non-Z tool axis
(<code>ToolChange--AxisUnsupported</code>), non-zero DL/DR deltas
(<code>ToolChange--DeltaUnsupported</code>; zero deltas are consumed
silently), and a TOOL CALL without a tool id
silently, and a delta that is not a literal value is ignored as
<code>ToolChange--DeltaNotLiteral</code>), and a TOOL CALL without a tool id
(<code>ToolChange--MissingToolId</code>, e.g. a variable tool number the
parser could not capture).
</p>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class SiemensCycle800TiltSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Siemens CYCLE800 (swivel cycle): resolves the tilted work plane from the positional arguments captured by and composes it into as the shared entry — the Siemens sibling of its XmlDoc promises. Unlike Fanuc G68.2 (plane only), CYCLE800 also positions the rotary axes implicitly (the G53.1 half): with wired, the tilt normal is solved to machine ABC and written into , and the block gets a non-modal rapid with Term = &amp;ldquo;CYCLE800&amp;rdquo; (mirroring ). Argument layout (HardNc reference NcArgCycle800): CYCLE800(FR, TC, ST, MODE, X0, Y0, Z0, A, B, C, X1, Y1, Z1, DIR [, FR_I, DMODE]) — 15- and 16-arg post variants both occur in the corpus. MODE is bit-coded: bits 7-6 select the swivel mode (00 axis-by-axis, 01 solid angle, 10 projection angle, 11 direct rotary), bit pairs 1-0/3-2/5-4 select each angle&#39;s axis (01=X, 10=Y, 11=Z). The motion-convention matrix is T(X1,Y1,Z1) &#183; R &#183; T(X0,Y0,Z0) (row-vector; the post-rotation zero offset applies innermost). ST units digit 1 composes additively onto the current programmable frame; FR/FR_I retraction and DIR solution preference are recorded in the section but not simulated (DIR = 0 suppresses the rotary positioning, per the control&#39;s frame-only variant). Cancel forms — bare CYCLE800, empty parentheses, the single-argument CYCLE800(0), or swivel-data-record name TC = &quot;0&quot; — reset the tilt to the shared inactive sentinel (Term = &quot;G69&quot; + identity entry, HardNc&#39;s convention). An in-between argument count (19 with a live TC) is treated as a truncated/unmodeled capture, not a cancel — warning + visible residue, so a mis-parsed call can never silently drop an active swivel. The rotary axes are not re-positioned on cancel: the retract/re-orient behavior depends on the machine&#39;s swivel data record, which does not exist offline; corpus programs follow the cancel with explicit G0 A.. C.. moves anyway. Fail-soft: a non-numeric argument (machine-runtime variable) leaves the Parsing.CYCLE800 residue visible and applies no transform (Coord-Tilt--003); an IK failure keeps the euler tilt and skips positioning (Coord-Tilt--004); a rotating CYCLE800 on a machine without kinematics/rotary axes keeps the tilt and warns (Coord-Tilt--005). Must run before (which owns the once-per-block modal carry and composes additive AROT/ATRANS onto this cycle&#39;s fresh matrix) and before the coordinate-offset syntaxes (chain order: frame entry ahead of CoordinateOffset).">
<meta name="description" content="Siemens CYCLE800 (swivel cycle): resolves the tilted work plane from the positional arguments captured by and composes it into as the shared entry — the Siemens sibling of its XmlDoc promises. Unlike Fanuc G68.2 (plane only), CYCLE800 also positions the rotary axes implicitly (the G53.1 half): with wired, the tilt normal is solved to machine ABC and written into , and the block gets a non-modal rapid with Term = &amp;ldquo;CYCLE800&amp;rdquo; (mirroring ). Argument layout (HardNc reference NcArgCycle800): CYCLE800(FR, TC, ST, MODE, X0, Y0, Z0, A, B, C, X1, Y1, Z1, DIR [, FR_I, DMODE]) — 15- and 16-arg post variants both occur in the corpus. MODE is bit-coded: bits 7-6 select the swivel mode (00 axis-by-axis, 01 solid angle, 10 projection angle, 11 direct rotary), bit pairs 1-0/3-2/5-4 select each angle&#39;s axis (01=X, 10=Y, 11=Z). The motion-convention matrix is T(X1,Y1,Z1) &#183; R &#183; T(X0,Y0,Z0) (row-vector; the post-rotation zero offset applies innermost). ST units digit 1 composes additively onto the current programmable frame; FR/FR_I retraction and DIR solution preference are recorded in the section but not simulated (DIR = 0 suppresses the rotary positioning, per the control&#39;s frame-only variant). Cancel forms — bare CYCLE800, empty parentheses, the single-argument CYCLE800(0), or swivel-data-record name TC = &quot;0&quot; — reset the tilt to the shared inactive sentinel (Term = &quot;G69&quot; + identity entry, HardNc&#39;s convention). An in-between argument count (19 with a live TC) is treated as a truncated/unmodeled capture, not a cancel — warning + visible residue, so a mis-parsed call can never silently drop an active swivel. The rotary axes are not re-positioned on cancel: the retract/re-orient behavior depends on the machine&#39;s swivel data record, which does not exist offline; corpus programs follow the cancel with explicit G0 A.. C.. moves anyway. Fail-soft: a non-numeric argument (machine-runtime variable) leaves the Parsing.CYCLE800 residue visible and applies no transform (Coord-Tilt--Cycle800NonNumericArgument; an undocumented 19 argument spelling is left as residue the same way, as Coord-Tilt--003); an IK failure keeps the euler tilt and skips positioning (Coord-Tilt--004); a rotating CYCLE800 on a machine without kinematics/rotary axes keeps the tilt and warns (Coord-Tilt--005). Must run before (which owns the once-per-block modal carry and composes additive AROT/ATRANS onto this cycle&#39;s fresh matrix) and before the coordinate-offset syntaxes (chain order: frame entry ahead of CoordinateOffset).">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -142,7 +142,9 @@ cancel with explicit <code>G0 A.. C..</code> moves anyway.
<p>
Fail-soft: a non-numeric argument (machine-runtime variable) leaves
the <code>Parsing.CYCLE800</code> residue visible and applies no transform
(<code>Coord-Tilt--003</code>); an IK failure keeps the euler tilt and
(<code>Coord-Tilt--Cycle800NonNumericArgument</code>; an undocumented 19
argument spelling is left as residue the same way, as
<code>Coord-Tilt--003</code>); an IK failure keeps the euler tilt and
skips positioning (<code>Coord-Tilt--004</code>); a rotating CYCLE800 on a
machine without kinematics/rotary axes keeps the tilt and warns
(<code>Coord-Tilt--005</code>).
@@ -209,7 +209,9 @@ cancel with explicit <code>G0 A.. C..</code> moves anyway.
<p>
Fail-soft: a non-numeric argument (machine-runtime variable) leaves
the <code>Parsing.CYCLE800</code> residue visible and applies no transform
(<code>Coord-Tilt--003</code>); an IK failure keeps the euler tilt and
(<code>Coord-Tilt--Cycle800NonNumericArgument</code>; an undocumented 19
argument spelling is left as residue the same way, as
<code>Coord-Tilt--003</code>); an IK failure keeps the euler tilt and
skips positioning (<code>Coord-Tilt--004</code>); a rotating CYCLE800 on a
machine without kinematics/rotary axes keeps the tilt and warns
(<code>Coord-Tilt--005</code>).
@@ -0,0 +1,402 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class RadiusCompInterference | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class RadiusCompInterference | HiAPI-C# 2025 ">
<meta name="description" content="Classifies cutter-compensation interference — the case a real control refuses under G41/G42: the compensated tool path runs against the programmed direction because the offset radius is larger than the inner feature it has to follow (an inner arc smaller than the offset, a groove bottom narrower than the tool). Fanuc stops with alarm PS0041 INTERFERENCE IN CUTTER COMPENSATION; Heidenhain and Siemens have equivalents. The simulation has no interference check and keeps running the swapped-side path — so a program that simulates cleanly can still stop on the machine, and a wrongly filled D row (the tool radius entered against a tool-centre CAM path that expects wear only) shows up as an overcut instead of an alarm. The diagnostics built from this class exist to close that gap; they never change the path. Today the gate is meaningful on the XY plane (G17) only: both compensation engines build the perpendicular as Z &#215; axis whatever plane is selected, so a G18/G19 region is neither compensated in its own plane nor checked here — the planeNormalDir parameters are ready for the day the engines pass the selected plane through.">
<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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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.RadiusCompInterference">
<h1 id="Hi_NcParsers_RadiusCompInterference" data-uid="Hi.NcParsers.RadiusCompInterference" class="text-break">
Class RadiusCompInterference
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcParsers.html">NcParsers</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Classifies cutter-compensation interference — the case a real control
refuses under G41/G42: the compensated tool path runs against the
programmed direction because the offset radius is larger than the
inner feature it has to follow (an inner arc smaller than the offset,
a groove bottom narrower than the tool). Fanuc stops with alarm
PS0041 INTERFERENCE IN CUTTER COMPENSATION; Heidenhain and Siemens
have equivalents. The simulation has no interference check and keeps
running the swapped-side path — so a program that simulates cleanly
can still stop on the machine, and a wrongly filled D row (the tool
radius entered against a tool-centre CAM path that expects wear only)
shows up as an overcut instead of an alarm. The diagnostics built from
this class exist to close that gap; they never change the path.</p>
<p>
Today the gate is meaningful on the XY plane (G17) only: both
compensation engines build the perpendicular as <code>Z × axis</code>
whatever plane is selected, so a G18/G19 region is neither compensated
in its own plane nor checked here — the <code>planeNormalDir</code> parameters
are ready for the day the engines pass the selected plane through.
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class RadiusCompInterference</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">RadiusCompInterference</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_NcParsers_RadiusCompInterference_ArcTolerance_mm" data-uid="Hi.NcParsers.RadiusCompInterference.ArcTolerance_mm">
ArcTolerance_mm
</h3>
<div class="markdown level1 summary"><p>How far (mm) the compensated arc end must sit beyond the arc centre
before an arc counts as interfering. An offset equal to the inner
radius collapses the compensated arc to a point — the tool exactly
fills the corner, no overcut — and CAM rounding puts such end points
a fraction of a micrometre on either side of the centre, so exact
equality stays silent instead of flickering with the last decimal.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const double ArcTolerance_mm = 0.001</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_NcParsers_RadiusCompInterference_DiagnosticId" data-uid="Hi.NcParsers.RadiusCompInterference.DiagnosticId">
DiagnosticId
</h3>
<div class="markdown level1 summary"><p>Diagnostic id shared by the SoftNc and HardNc compensation walks.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string DiagnosticId = &quot;RadiusComp--Interference&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_NcParsers_RadiusCompInterference_TryDescribeArc_" data-uid="Hi.NcParsers.RadiusCompInterference.TryDescribeArc*"></a>
<h3 id="Hi_NcParsers_RadiusCompInterference_TryDescribeArc_Hi_Geom_Vec3d_Hi_Geom_Vec3d_Hi_Geom_Vec3d_System_Int32_System_Double_System_Int32_System_String__System_Collections_Generic_Dictionary_System_String_System_Object___" data-uid="Hi.NcParsers.RadiusCompInterference.TryDescribeArc(Hi.Geom.Vec3d,Hi.Geom.Vec3d,Hi.Geom.Vec3d,System.Int32,System.Double,System.Int32,System.String@,System.Collections.Generic.Dictionary{System.String,System.Object}@)">
TryDescribeArc(Vec3d, Vec3d, Vec3d, int, double, int, out string, out Dictionary&lt;string, object&gt;)
</h3>
<div class="markdown level1 summary"><p>Classifies an arc block of a compensation region. Interference means
the perpendicular offset of the arc's end point sits on the far side
of the arc centre from the programmed end point, on the compensation
plane — the compensated arc then runs against the programmed
direction. Returns false for a degenerate programmed radius and for
an offset equal to the inner radius within
<a class="xref" href="Hi.NcParsers.RadiusCompInterference.html#Hi_NcParsers_RadiusCompInterference_ArcTolerance_mm">ArcTolerance_mm</a> (the compensated arc collapses to a
point rather than reversing); returns true with a constant
notification <code class="paramref">text</code> and a value-carrying
<code class="paramref">detail</code> on interference.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool TryDescribeArc(Vec3d programEnd, Vec3d compensatedEnd, Vec3d center, int planeNormalDir, double offsetRadius_mm, int offsetId, out string text, out Dictionary&lt;string, object&gt; detail)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>programEnd</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Programmed (nominal) end point of the arc.</p>
</dd>
<dt><code>compensatedEnd</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Perpendicular offset of the arc end (the arc's own transient end, not
the corner intersection with the next block).</p>
</dd>
<dt><code>center</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Arc centre in program coordinates.</p>
</dd>
<dt><code>planeNormalDir</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Index (0/1/2) of the compensation plane's normal axis.</p>
</dd>
<dt><code>offsetRadius_mm</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Unsigned offset radius applied by the region.</p>
</dd>
<dt><code>offsetId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The D row the region resolves its radius from.</p>
</dd>
<dt><code>text</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Constant notification text (fold-stable), or null.</p>
</dd>
<dt><code>detail</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>Offset radius, programmed arc radius and D row, or null.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_RadiusCompInterference_TryDescribeLinear_" data-uid="Hi.NcParsers.RadiusCompInterference.TryDescribeLinear*"></a>
<h3 id="Hi_NcParsers_RadiusCompInterference_TryDescribeLinear_Hi_Geom_Vec3d_Hi_Geom_Vec3d_System_Int32_System_Double_System_Int32_System_String__System_Collections_Generic_Dictionary_System_String_System_Object___" data-uid="Hi.NcParsers.RadiusCompInterference.TryDescribeLinear(Hi.Geom.Vec3d,Hi.Geom.Vec3d,System.Int32,System.Double,System.Int32,System.String@,System.Collections.Generic.Dictionary{System.String,System.Object}@)">
TryDescribeLinear(Vec3d, Vec3d, int, double, int, out string, out Dictionary&lt;string, object&gt;)
</h3>
<div class="markdown level1 summary"><p>Classifies a straight block of a compensation region (not the
start-up block). Interference means the compensated displacement —
from the previous compensated position to this block's compensated
position — runs against the programmed displacement on the
compensation plane: the corner intersections on either side of a
step narrower than the offset radius cross over. Returns false for a
collapsed (zero-length) compensated move; returns true with a
constant notification <code class="paramref">text</code> and a value-carrying
<code class="paramref">detail</code> on interference.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool TryDescribeLinear(Vec3d programDisplacement, Vec3d compensatedDisplacement, int planeNormalDir, double offsetRadius_mm, int offsetId, out string text, out Dictionary&lt;string, object&gt; detail)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>programDisplacement</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Nominal displacement of the block.</p>
</dd>
<dt><code>compensatedDisplacement</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Displacement between the compensated end points of the previous block and this block.</p>
</dd>
<dt><code>planeNormalDir</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Index (0/1/2) of the compensation plane's normal axis.</p>
</dd>
<dt><code>offsetRadius_mm</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Unsigned offset radius applied by the region.</p>
</dd>
<dt><code>offsetId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The D row the region resolves its radius from.</p>
</dd>
<dt><code>text</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Constant notification text (fold-stable), or null.</p>
</dd>
<dt><code>detail</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>Offset radius, programmed and compensated lengths and D row, or null.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></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>
@@ -200,6 +200,29 @@ project serializes the suit's two members <em>flat</em> in the project XML,
keeping the per-workpiece <a class="xref" href="Hi.NcParsers.NcRunnerSuit.html#Hi_NcParsers_NcRunnerSuit_PerCaseNcDependencyList">PerCaseNcDependencyList</a> project-local
rather than a shared side file.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.RadiusCompInterference.html">RadiusCompInterference</a></dt>
<dd><p>Classifies cutter-compensation interference — the case a real control
refuses under G41/G42: the compensated tool path runs against the
programmed direction because the offset radius is larger than the
inner feature it has to follow (an inner arc smaller than the offset,
a groove bottom narrower than the tool). Fanuc stops with alarm
PS0041 INTERFERENCE IN CUTTER COMPENSATION; Heidenhain and Siemens
have equivalents. The simulation has no interference check and keeps
running the swapped-side path — so a program that simulates cleanly
can still stop on the machine, and a wrongly filled D row (the tool
radius entered against a tool-centre CAM path that expects wear only)
shows up as an overcut instead of an alarm. The diagnostics built from
this class exist to close that gap; they never change the path.</p>
<p>
Today the gate is meaningful on the XY plane (G17) only: both
compensation engines build the perpendicular as <code>Z × axis</code>
whatever plane is selected, so a G18/G19 region is neither compensated
in its own plane nor checked here — the <code>planeNormalDir</code> parameters
are ready for the day the engines pass the selected plane through.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -489,23 +489,32 @@ The key is Offset ID (H or D in NC code).</p>
<a id="Hi_Numerical_MillingToolOffsetTable_UpdateIdealMillingToolOffsetTableByToolHouse_" data-uid="Hi.Numerical.MillingToolOffsetTable.UpdateIdealMillingToolOffsetTableByToolHouse*"></a>
<h3 id="Hi_Numerical_MillingToolOffsetTable_UpdateIdealMillingToolOffsetTableByToolHouse_Hi_Machining_MachiningToolHouse_" data-uid="Hi.Numerical.MillingToolOffsetTable.UpdateIdealMillingToolOffsetTableByToolHouse(Hi.Machining.MachiningToolHouse)">
UpdateIdealMillingToolOffsetTableByToolHouse(MachiningToolHouse)
<h3 id="Hi_Numerical_MillingToolOffsetTable_UpdateIdealMillingToolOffsetTableByToolHouse_Hi_Machining_MachiningToolHouse_Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_" data-uid="Hi.Numerical.MillingToolOffsetTable.UpdateIdealMillingToolOffsetTableByToolHouse(Hi.Machining.MachiningToolHouse,Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis)">
UpdateIdealMillingToolOffsetTableByToolHouse(MachiningToolHouse, RadiusOffsetBasis)
</h3>
<div class="markdown level1 summary"><p>Updates the ideal tool offsets in this table based on a tool house.</p>
<div class="markdown level1 summary"><p>Updates the ideal tool offsets in this table based on a tool house:
ideal height = spindle-buckle-to-tool-tip length; ideal radius of a
milling-cutter row = the cutter profile's max radius under
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html#Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_CutterRadius">CutterRadius</a> or 0 under
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html#Hi_NcParsers_Dependencys_Generic_RadiusOffsetBasis_ZeroBased">ZeroBased</a>. Wear is preserved and rows
for tools no longer in the house are dropped.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void UpdateIdealMillingToolOffsetTableByToolHouse(MachiningToolHouse millingToolHouse)</code></pre>
<pre><code class="lang-csharp hljs">public void UpdateIdealMillingToolOffsetTableByToolHouse(MachiningToolHouse millingToolHouse, RadiusOffsetBasis radiusBasis = RadiusOffsetBasis.CutterRadius)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>millingToolHouse</code> <a class="xref" href="Hi.Machining.MachiningToolHouse.html">MachiningToolHouse</a></dt>
<dd><p>The machining tool house containing tool information.</p>
</dd>
<dt><code>radiusBasis</code> <a class="xref" href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html">RadiusOffsetBasis</a></dt>
<dd><p>The project's cutter-radius compensation
strategy; decides the ideal radius written for milling-cutter rows.</p>
</dd>
</dl>
+6
View File
@@ -2440,6 +2440,9 @@
<li>
<a href="Hi.NcParsers.NcRunnerSuit.html" name="" title="NcRunnerSuit">NcRunnerSuit</a>
</li>
<li>
<a href="Hi.NcParsers.RadiusCompInterference.html" name="" title="RadiusCompInterference">RadiusCompInterference</a>
</li>
<li>
<a href="Hi.NcParsers.Sentence.html" name="" title="Sentence">Sentence</a>
</li>
@@ -2587,6 +2590,9 @@
<li>
<a href="Hi.NcParsers.Dependencys.Generic.MachineAxisConfig.html" name="" title="MachineAxisConfig">MachineAxisConfig</a>
</li>
<li>
<a href="Hi.NcParsers.Dependencys.Generic.RadiusOffsetBasis.html" name="" title="RadiusOffsetBasis">RadiusOffsetBasis</a>
</li>
<li>
<a href="Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html" name="" title="SubProgramFolderConfig">SubProgramFolderConfig</a>
</li>
File diff suppressed because one or more lines are too long