This commit is contained in:
2026-09-12 18:16:27 +08:00
parent b7f55aa631
commit 397a7a8cc4
96 changed files with 1167 additions and 1259 deletions
@@ -6,7 +6,7 @@
<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.">
<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. The gate works on the selected G17/G18/G19 plane: both engines pass the block&#39;s plane through planeNormalDir, and the in-plane projections below use it (neither engine checks a polar G12.1 block). Until 2026-09-11 both engines built the perpendicular as Z &#215; axis whatever plane was selected, so a G18/G19 region was offset along its normal and could never be judged here.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -110,11 +110,12 @@ 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.
The gate works on the selected G17/G18/G19 plane: both engines pass
the block's plane through <code>planeNormalDir</code>, and the in-plane
projections below use it (neither engine checks a polar G12.1 block).
Until 2026-09-11 both engines built the perpendicular as
<code>Z × axis</code> whatever plane was selected, so a G18/G19 region was
offset along its normal and could never be judged here.
</p>
</div>
<div class="markdown conceptual"></div>