deploy.
This commit is contained in:
@@ -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–BelowFluteHeight</code>);
|
||||
the <code>IMessage</code> channel (e.g. <code>Cutter-UpperBeam–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>
|
||||
|
||||
+200
@@ -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 "{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.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<TSrc>(TSrc, Action<TSrc>)</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>)</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="xref" href="Hi.Common.MaskUtil.html#Hi_Common_MaskUtil_GetMaskedValue__1___0___0_System_Boolean_">MaskUtil.GetMaskedValue<T>(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<T>(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>
|
||||
+14
-7
@@ -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>
|
||||
|
||||
|
||||
+3
-2
@@ -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[&ldquo;TOOL CALL&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 = &ldquo;TOOL CALL&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 "Q1" Z) loses its quotes at capture, so the evaluator substitutes the Q parameter's value and the numeric branch below treats it as a tool number. Corpus-zero (real names are "B40R"-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[&ldquo;TOOL CALL&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 = &ldquo;TOOL CALL&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 "Q1" Z) loses its quotes at capture, so the evaluator substitutes the Q parameter's value and the numeric branch below treats it as a tool number. Corpus-zero (real names are "B40R"-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>
|
||||
|
||||
+4
-2
@@ -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 = &ldquo;CYCLE800&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's axis (01=X, 10=Y, 11=Z). The motion-convention matrix is T(X1,Y1,Z1) · R · 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's frame-only variant). Cancel forms — bare CYCLE800, empty parentheses, the single-argument CYCLE800(0), or swivel-data-record name TC = "0" — reset the tilt to the shared inactive sentinel (Term = "G69" + identity entry, HardNc's convention). An in-between argument count (1–9 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'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'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 = &ldquo;CYCLE800&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's axis (01=X, 10=Y, 11=Z). The motion-convention matrix is T(X1,Y1,Z1) · R · 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's frame-only variant). Cancel forms — bare CYCLE800, empty parentheses, the single-argument CYCLE800(0), or swivel-data-record name TC = "0" — reset the tilt to the shared inactive sentinel (Term = "G69" + identity entry, HardNc's convention). An in-between argument count (1–9 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'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 1–9 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'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 1–9
|
||||
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 1–9
|
||||
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 × 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 "{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.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 = "RadiusComp--Interference"</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<string, object>)
|
||||
|
||||
</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<string, object> 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><<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>></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<string, object>)
|
||||
|
||||
</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<string, object> 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><<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>></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>
|
||||
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user