diff --git a/App/Hi.WpfPlus.dll b/App/Hi.WpfPlus.dll index ac63ce7e..f05cdce2 100644 Binary files a/App/Hi.WpfPlus.dll and b/App/Hi.WpfPlus.dll differ diff --git a/App/HiCbtr.dll b/App/HiCbtr.dll index 8ef933a1..f42d7023 100644 Binary files a/App/HiCbtr.dll and b/App/HiCbtr.dll differ diff --git a/App/HiDisp.dll b/App/HiDisp.dll index 19fb2b4a..c05a32c6 100644 Binary files a/App/HiDisp.dll and b/App/HiDisp.dll differ diff --git a/App/HiGeom.dll b/App/HiGeom.dll index 72de1188..38e96acf 100644 Binary files a/App/HiGeom.dll and b/App/HiGeom.dll differ diff --git a/App/HiLicense.dll b/App/HiLicense.dll index b72f5cb5..54c313b4 100644 Binary files a/App/HiLicense.dll and b/App/HiLicense.dll differ diff --git a/App/HiMech.dll b/App/HiMech.dll index e360be26..bd610692 100644 Binary files a/App/HiMech.dll and b/App/HiMech.dll differ diff --git a/App/HiNC-2025-win-desktop.deps.json b/App/HiNC-2025-win-desktop.deps.json index 486d3cc4..a8d91d0f 100644 --- a/App/HiNC-2025-win-desktop.deps.json +++ b/App/HiNC-2025-win-desktop.deps.json @@ -11,9 +11,9 @@ "dependencies": { "AvalonEdit": "6.3.0.90", "FontAwesome.Sharp": "6.3.0", - "Hi.WpfPlus": "3.1.138", - "HiNc": "3.1.171", - "HiNc-Resource": "3.1.53", + "Hi.WpfPlus": "3.1.139", + "HiNc": "3.1.172", + "HiNc-Resource": "3.1.54", "Serilog.Extensions.Hosting": "10.0.0", "Serilog.Sinks.Console": "6.1.1", "Serilog.Sinks.File": "7.0.0", @@ -1676,36 +1676,36 @@ } } }, - "Hi.WpfPlus/3.1.138": { + "Hi.WpfPlus/3.1.139": { "dependencies": { - "HiDisp": "3.1.144" + "HiDisp": "3.1.145" }, "runtime": { "lib/net10.0-windows7.0/Hi.WpfPlus.dll": { - "assemblyVersion": "3.1.138.0", - "fileVersion": "3.1.138.0" + "assemblyVersion": "3.1.139.0", + "fileVersion": "3.1.139.0" } } }, - "HiCbtr/3.1.141": { + "HiCbtr/3.1.142": { "dependencies": { - "HiDisp": "3.1.144" + "HiDisp": "3.1.145" }, "runtime": { "lib/net10.0/HiCbtr.dll": { - "assemblyVersion": "3.1.141.0", - "fileVersion": "3.1.141.0" + "assemblyVersion": "3.1.142.0", + "fileVersion": "3.1.142.0" } } }, - "HiDisp/3.1.144": { + "HiDisp/3.1.145": { "dependencies": { - "HiGeom": "3.1.133" + "HiGeom": "3.1.134" }, "runtime": { "lib/net10.0/HiDisp.dll": { - "assemblyVersion": "3.1.144.0", - "fileVersion": "3.1.144.0" + "assemblyVersion": "3.1.145.0", + "fileVersion": "3.1.145.0" } }, "native": { @@ -1723,7 +1723,7 @@ } } }, - "HiGeom/3.1.133": { + "HiGeom/3.1.134": { "dependencies": { "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", @@ -1733,8 +1733,8 @@ }, "runtime": { "lib/net10.0/HiGeom.dll": { - "assemblyVersion": "3.1.133.0", - "fileVersion": "3.1.133.0" + "assemblyVersion": "3.1.134.0", + "fileVersion": "3.1.134.0" } }, "resources": { @@ -1746,27 +1746,27 @@ } } }, - "HiLicense/3.1.134": { + "HiLicense/3.1.135": { "dependencies": { - "HiGeom": "3.1.133" + "HiGeom": "3.1.134" }, "runtime": { "lib/net10.0/HiLicense.dll": { - "assemblyVersion": "3.1.134.0", - "fileVersion": "3.1.134.0" + "assemblyVersion": "3.1.135.0", + "fileVersion": "3.1.135.0" } } }, - "HiMech/3.1.152": { + "HiMech/3.1.153": { "dependencies": { "CommandLineParser": "2.9.1", - "HiCbtr": "3.1.141", + "HiCbtr": "3.1.142", "Microsoft.CodeAnalysis.CSharp.Scripting": "5.3.0" }, "runtime": { "lib/net10.0/HiMech.dll": { - "assemblyVersion": "3.1.152.0", - "fileVersion": "3.1.152.0" + "assemblyVersion": "3.1.153.0", + "fileVersion": "3.1.153.0" } }, "resources": { @@ -1781,21 +1781,21 @@ } } }, - "HiNc/3.1.171": { + "HiNc/3.1.172": { "dependencies": { "Dapper": "2.1.35", "Google.Protobuf": "3.28.3", "Grpc.AspNetCore": "2.66.0", "Grpc.Net.Client": "2.66.0", - "HiLicense": "3.1.134", - "HiMech": "3.1.152", - "HiUniNc": "3.1.148", + "HiLicense": "3.1.135", + "HiMech": "3.1.153", + "HiUniNc": "3.1.149", "Microsoft.Data.Sqlite": "9.0.0" }, "runtime": { "lib/net10.0/HiNc.dll": { - "assemblyVersion": "3.1.171.0", - "fileVersion": "3.1.171.0" + "assemblyVersion": "3.1.172.0", + "fileVersion": "3.1.172.0" } }, "resources": { @@ -1807,22 +1807,22 @@ } } }, - "HiNc-Resource/3.1.53": { + "HiNc-Resource/3.1.54": { "runtime": { "lib/net10.0/HiNc-Resource.dll": { - "assemblyVersion": "3.1.53.0", - "fileVersion": "3.1.53.0" + "assemblyVersion": "3.1.54.0", + "fileVersion": "3.1.54.0" } } }, - "HiUniNc/3.1.148": { + "HiUniNc/3.1.149": { "dependencies": { - "HiMech": "3.1.152" + "HiMech": "3.1.153" }, "runtime": { "lib/net10.0/HiUniNc.dll": { - "assemblyVersion": "3.1.148.0", - "fileVersion": "3.1.148.0" + "assemblyVersion": "3.1.149.0", + "fileVersion": "3.1.149.0" } } }, @@ -2257,68 +2257,68 @@ "path": "grpc.net.common/2.66.0", "hashPath": "grpc.net.common.2.66.0.nupkg.sha512" }, - "Hi.WpfPlus/3.1.138": { + "Hi.WpfPlus/3.1.139": { "type": "package", "serviceable": true, - "sha512": "sha512-S0unmDU1xgOP9zT11Dnp5HRFFtmHjvChbpLRKgIVXtmbrax04V0vbRFJ5EYjF/OAuk/fwxvzyZqxMx3hfNVNtw==", - "path": "hi.wpfplus/3.1.138", - "hashPath": "hi.wpfplus.3.1.138.nupkg.sha512" + "sha512": "sha512-muLHNPY6TJ3BwVr7cQ4tp98ZmQ085OrmgbqVltpRbJmWNxq7bZtI1BHo/3VtermjeO0YNbDMFjpLNH8fp2XM3A==", + "path": "hi.wpfplus/3.1.139", + "hashPath": "hi.wpfplus.3.1.139.nupkg.sha512" }, - "HiCbtr/3.1.141": { + "HiCbtr/3.1.142": { "type": "package", "serviceable": true, - "sha512": "sha512-IgsFEmpPFvprsMHIO+t7nn2xTGtffOV0bA70uTB5jjQl7n70U+EEWUxWBejMImSrq/kCxJ2SM3IH/XDpTSalAg==", - "path": "hicbtr/3.1.141", - "hashPath": "hicbtr.3.1.141.nupkg.sha512" + "sha512": "sha512-yK0EWRkv0YWPJ1SsZLfYBDCOsJat/XpjTqLhLYreQFPp+5zTHd/6Uf6gjC8yIcHOAH4VjSCxvOQlMk7eVtG3wQ==", + "path": "hicbtr/3.1.142", + "hashPath": "hicbtr.3.1.142.nupkg.sha512" }, - "HiDisp/3.1.144": { + "HiDisp/3.1.145": { "type": "package", "serviceable": true, - "sha512": "sha512-+I/W1mu90sUyk2HOzVW9PnPzO5QMH8i/wTD5Op8VzUe8nViMqjeS+DZzugwlzkh1eJB+WagdhJJGVQEd8yhWNA==", - "path": "hidisp/3.1.144", - "hashPath": "hidisp.3.1.144.nupkg.sha512" + "sha512": "sha512-q6/RU5BeXcr88a4vhTqWes7UIcT9kapJm5viEdpDfn8cTldkLoVF+JXjlX62ksX28lYhynwYtOGsDRMucLCUqg==", + "path": "hidisp/3.1.145", + "hashPath": "hidisp.3.1.145.nupkg.sha512" }, - "HiGeom/3.1.133": { + "HiGeom/3.1.134": { "type": "package", "serviceable": true, - "sha512": "sha512-gqt1/MR+c2+K22T4vsVL9g5+GH5ldNg/CvYokFAReFYR8tS44MFvjePQskfBmm8r6uXFY2ROPCm5YS5pPY98RQ==", - "path": "higeom/3.1.133", - "hashPath": "higeom.3.1.133.nupkg.sha512" + "sha512": "sha512-Frf5//Zbo9YsCT5pdiAsvBwPOtsch1/hCKW17BatWcWwmSk98xC6hfDsDRGMSImN74kjA61U8RUlGicLJA/0Gw==", + "path": "higeom/3.1.134", + "hashPath": "higeom.3.1.134.nupkg.sha512" }, - "HiLicense/3.1.134": { + "HiLicense/3.1.135": { "type": "package", "serviceable": true, - "sha512": "sha512-d5eOvZXfZqfFJ5tPTkMJX5OEmRy8eyyspeMZmw4o4IeY1ukwYSJ+WA7evLfXRofYP8nfu4raqow8lOZKmp8sEg==", - "path": "hilicense/3.1.134", - "hashPath": "hilicense.3.1.134.nupkg.sha512" + "sha512": "sha512-5V4h8L9B/w0Xs7rpzXjomboCg6lXmmwIOrcOhLAuLxQ0PDNjnV4hWust3F9YRX9gJfbgx3dokZTV73LQ9lc2mg==", + "path": "hilicense/3.1.135", + "hashPath": "hilicense.3.1.135.nupkg.sha512" }, - "HiMech/3.1.152": { + "HiMech/3.1.153": { "type": "package", "serviceable": true, - "sha512": "sha512-HNlLKzACdE7Vj9Qa2PrBBUAkYVts8BlaqdWaUfXxLfJICp/GJVXUTah5v3E8O5KC0m7byNMLdzYTabJW4stZ5A==", - "path": "himech/3.1.152", - "hashPath": "himech.3.1.152.nupkg.sha512" + "sha512": "sha512-ojwLuEpicGegECy32QVng4h/VF7Kv3IljgWfyCnzHmRf9qVoFV09tu/zYAHLBL+TErWkYH+r+uduwuIWssBRQA==", + "path": "himech/3.1.153", + "hashPath": "himech.3.1.153.nupkg.sha512" }, - "HiNc/3.1.171": { + "HiNc/3.1.172": { "type": "package", "serviceable": true, - "sha512": "sha512-4Tj/+E9aoLRrnAdUuMYyjVYNAe7k4AQzyGzw3nH2VDB2pTd/Yq3WxC2MY/3nzRo0BHK1Y2SgEkQ6mPpiYybung==", - "path": "hinc/3.1.171", - "hashPath": "hinc.3.1.171.nupkg.sha512" + "sha512": "sha512-dyofOqXS8u8PoGzORwc7seSNrRxv5bITEtiZikfrUPHxDojTg/M9toGBEQsN8/zEURLiUPBdVgNY/s2VayoxLg==", + "path": "hinc/3.1.172", + "hashPath": "hinc.3.1.172.nupkg.sha512" }, - "HiNc-Resource/3.1.53": { + "HiNc-Resource/3.1.54": { "type": "package", "serviceable": true, - "sha512": "sha512-NbpAR+5LY9MSssCftrRsfBz++U162vLgdaFpme3YMcTF9IKJsjRCvRXPdxsLIRrnMG8Ud9uUzwNEnYjYnTtxdg==", - "path": "hinc-resource/3.1.53", - "hashPath": "hinc-resource.3.1.53.nupkg.sha512" + "sha512": "sha512-1hq99sqP6aySFTDzqwZb4eZygMyGbSBnfenBqSXyBYKA1JZN4Mb+154ODdBsIkKrjNuvFtwZxdyr0VDglM8hqw==", + "path": "hinc-resource/3.1.54", + "hashPath": "hinc-resource.3.1.54.nupkg.sha512" }, - "HiUniNc/3.1.148": { + "HiUniNc/3.1.149": { "type": "package", "serviceable": true, - "sha512": "sha512-F+yFQh3VvWluPb2u6bR0XZNNjqCFgL/nMhAY0qAsOSA49b9mstzax9JGTb1u7RHf0V1+meDVhkS1MD4ZmSLBNQ==", - "path": "hiuninc/3.1.148", - "hashPath": "hiuninc.3.1.148.nupkg.sha512" + "sha512": "sha512-jI/paWFfoCRiFl7Sz06GIhDk+Lip1c7TfZGXlgsp7aJdISA3bwPvEDHCrJeoCd2EjNEQapMZvUxXS4EFaKhwoQ==", + "path": "hiuninc/3.1.149", + "hashPath": "hiuninc.3.1.149.nupkg.sha512" }, "MathNet.Numerics/5.0.0": { "type": "package", diff --git a/App/HiNC-2025-win-desktop.dll b/App/HiNC-2025-win-desktop.dll index 5016fceb..d7b4dd1d 100644 Binary files a/App/HiNC-2025-win-desktop.dll and b/App/HiNC-2025-win-desktop.dll differ diff --git a/App/HiNC-2025-win-desktop.exe b/App/HiNC-2025-win-desktop.exe index 433b5db5..6ba65e42 100644 Binary files a/App/HiNC-2025-win-desktop.exe and b/App/HiNC-2025-win-desktop.exe differ diff --git a/App/HiNC-2025-win-desktop.pdb b/App/HiNC-2025-win-desktop.pdb index dc2153f6..8e26bf3b 100644 Binary files a/App/HiNC-2025-win-desktop.pdb and b/App/HiNC-2025-win-desktop.pdb differ diff --git a/App/HiNc-Resource.dll b/App/HiNc-Resource.dll index 1975b6b1..f0c83614 100644 Binary files a/App/HiNc-Resource.dll and b/App/HiNc-Resource.dll differ diff --git a/App/HiNc.dll b/App/HiNc.dll index 75cc7000..ab8ed999 100644 Binary files a/App/HiNc.dll and b/App/HiNc.dll differ diff --git a/App/HiUniNc.dll b/App/HiUniNc.dll index c0b07767..1ff63e5b 100644 Binary files a/App/HiUniNc.dll and b/App/HiUniNc.dll differ diff --git a/App/en/HiGeom.resources.dll b/App/en/HiGeom.resources.dll index ef8737b4..46a9adbb 100644 Binary files a/App/en/HiGeom.resources.dll and b/App/en/HiGeom.resources.dll differ diff --git a/App/en/HiMech.resources.dll b/App/en/HiMech.resources.dll index 99edf667..ca79adec 100644 Binary files a/App/en/HiMech.resources.dll and b/App/en/HiMech.resources.dll differ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.LazyLinkedList-1.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.LazyLinkedList-1.html index 5eeb8b1c..09e2feba 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.LazyLinkedList-1.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.LazyLinkedList-1.html @@ -632,6 +632,59 @@ materialization in lock-step with syntax/semantic processing).

+ + +

+ ReplaceSource(IEnumerable<T>) + +

+ +

Replaces the current source's remaining items with src. +Discards anything the old source had queued (it is disposed); the next +on-demand materialization (triggered by Next +on the present tail or First on an empty list) yields from +src only. Already-materialized nodes — including the +present tail — are unaffected, so this is the natural way to redirect +future execution from the current tail onwards (for example, a GOTO +that re-segments the file from the target N{seq} line: the GOTO host +block stays materialized as the predecessor, and the post-target +re-segmentation becomes the new source while the original between-here- +and-EOF source is dropped).

+
+
+ +
+
public void ReplaceSource(IEnumerable<T> src)
+
+ +

Parameters

+
+
src IEnumerable<T>
+

The new source. Yielded from on the next materialization.

+
+
+ + + + + + + + +

Remarks

+

Constraint: same as PrependSource(IEnumerable<T>) — the present tail is +the splice point. Differs from PrependSource(IEnumerable<T>) in that the +old source's untouched tail is NOT preserved after src +runs out; ReplaceSource(IEnumerable<T>) drops it. Use PrependSource(IEnumerable<T>) +for inline expansion (M98 / G65) where the caller's tail must resume +after the inlined body; use ReplaceSource(IEnumerable<T>) for control-flow +redirection (GOTO, M99 P{seq}) where the original tail is no longer +reachable.

+
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html similarity index 92% rename from App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html index aa11e85f..bcbdd408 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html @@ -2,9 +2,9 @@ - Delegate XFactory.GenByXElementDelegate | HiAPI-C# 2025 + Delegate XFactory.XGeneratorDelegate | HiAPI-C# 2025 - + @@ -84,12 +84,12 @@ -
+
-

-Delegate XFactory.GenByXElementDelegate +

+Delegate XFactory.XGeneratorDelegate

@@ -102,7 +102,7 @@ Delegate XFactory.GenByXElementDelegate
-
public delegate object XFactory.GenByXElementDelegate(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
+
public delegate object XFactory.XGeneratorDelegate(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)

Parameters

@@ -164,7 +164,7 @@ Delegate XFactory.GenByXElementDelegate -

Remarks

+

Remarks

Note that the design pattern of seperating BaseDirectory and RelativePath is for easy data package moving. The pattern assume the BaseDirectory can be changed if all the content in the BaseDirectory is changed to the destinate directory.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.html index d90a5c2e..7bfca26a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.html @@ -148,7 +148,7 @@ Class XFactory

Remarks

-

Generator functions must be added to Regs to enable the factory to create objects from XML.

+

Generator functions must be added to Generators to enable the factory to create objects from XML.

@@ -156,10 +156,10 @@ Class XFactory - + -

- Regs +

+ Generators

@@ -168,7 +168,7 @@ Class XFactory
-
public static Dictionary<string, XFactory.GenByXElementDelegate> Regs { get; set; }
+
public static Dictionary<string, XFactory.XGeneratorDelegate> Generators { get; set; }
@@ -177,7 +177,7 @@ Class XFactory

Property Value

-
Dictionary<string, XFactory.GenByXElementDelegate>
+
Dictionary<string, XFactory.XGeneratorDelegate>
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.html index 7012c3fa..b9f31bad 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.html @@ -140,7 +140,7 @@ Delegates
-
XFactory.GenByXElementDelegate
+
XFactory.XGeneratorDelegate

Delegate for generating objects from XML elements with relative file path.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.html index 1b7c38fa..1dd48a73 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.html @@ -201,6 +201,37 @@ Class SessionProgress +

Constructors +

+ + + + +

+ SessionProgress() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public SessionProgress()
+
+ + + + + + + + + + + + +

Properties

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.CncBrandDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.CncBrandDependency.html index 22bd50d7..e0d9178f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.CncBrandDependency.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.CncBrandDependency.html @@ -456,7 +456,7 @@ to retrieve the brand.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html new file mode 100644 index 00000000..21041e2e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html @@ -0,0 +1,531 @@ + + + + + Class FanucGotoIterationDependency | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucGotoIterationDependency +

+ +
+
Namespace
Hi.NcParsers.Dependencys.Fanuc
+
Assembly
HiMech.dll
+
+ +

Watchdog for Fanuc Custom Macro B GOTO loops. Holds a +MaxIterationsPerTarget limit (XML-persisted user config — +the soft cap above which the upcoming +FanucGotoSyntax stops firing and emits a warning) plus a +runtime per-target hit counter (CountByTarget — not +serialised, cleared at session start by +RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)).

+

+The dependency is syntax-managed: FanucGotoSyntax reads the +limit, increments the counter, and decides whether to fire. There is +no host Func provider — the dep is placed in +Hi.NcParsers.Dependencys.Fanuc rather than +Hi.NcParsers.Dependencys.SystemWired because nothing outside the +syntax pipeline writes it; Reset() is a plain method call +the runner invokes, not a host-wired Func. +

+

+The counter key is (FileName, TargetN) where FileName +is the source-level file path of the block containing the GOTO (the +relative path form carried on FilePath — same +form used by IndexedFileLine labels). Source-level keying means +multiple inline invocations of the same subprogram pool their counts +(they ARE the same source-code GOTO), while two different files with +their own N100 stay isolated (they ARE different jumps). +

+

+Default MaxIterationsPerTarget is 1000 — a runaway-loop +guard, not a precise iteration budget. Legitimate macro loops +(multi-hole drill matrices, calibration sweeps) sit well below this; +truly infinite loops hit the limit fast. Projects with batch-style +macros that legitimately need higher counts can raise the value in +the project XML. +

+
+
+ +
+
public class FanucGotoIterationDependency : INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucGotoIterationDependency
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FanucGotoIterationDependency() + +

+ +

Initializes a new instance with the default limit and an empty counter.

+
+
+ +
+
public FanucGotoIterationDependency()
+
+ + + + + + + + + + + + + + + +

+ FanucGotoIterationDependency(XElement) + +

+ +

Loads MaxIterationsPerTarget from XML produced by MakeXmlSource(string, string, bool); absent element falls back to DefaultMaxIterationsPerTarget.

+
+
+ +
+
public FanucGotoIterationDependency(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ DefaultMaxIterationsPerTarget + +

+ +

Default for MaxIterationsPerTarget. Sized as a +runaway-loop guard: legitimate Fanuc macros (drill grids, +calibration sweeps) stay well below, while truly unbounded loops +hit it fast.

+
+
+ +
+
public const int DefaultMaxIterationsPerTarget = 1000
+
+ + + + +

Field Value

+
+
int
+
+
+ + + + + + + + + +

Properties +

+ + + + +

+ CountByTarget + +

+ +

Per-target hit counter keyed by (FileName, TargetN). +Runtime-only; not serialised. Cleared by Reset() on +the session-init edge so a brand-preset runner reused across +sessions does not leak counts.

+
+
+ +
+
public Dictionary<(string FileName, int TargetN), int> CountByTarget { get; }
+
+ + + + + +

Property Value

+
+
Dictionary<(string FileName, int TargetN), int>
+
+
+ + + + + + + + + + +

+ MaxIterationsPerTarget + +

+ +

Soft cap on consecutive fires of any single GOTO target within +one source file (see CountByTarget for the keying). +Above this, the consuming syntax should emit a warning and +suppress the redirect on the over-limit block; subsequent blocks +flow through naturally.

+
+
+ +
+
public int MaxIterationsPerTarget { get; set; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + + + +

+ Reset() + +

+ +

Clears CountByTarget; leaves MaxIterationsPerTarget untouched.

+
+
+ +
+
public void Reset()
+
+ + + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html index 8b4dda27..115f6d6e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html @@ -111,7 +111,7 @@ long-lived dependency object that owns this data.
-
public sealed class FanucPositionVariableLookup : IRuntimeVariableLookup
+
public sealed class FanucPositionVariableLookup : IRuntimeVariableLookup, IMakeXmlSource
@@ -129,6 +129,7 @@ long-lived dependency object that owns this data.
Implements
+
@@ -186,6 +187,69 @@ long-lived dependency object that owns this data. +

Constructors +

+ + + + +

+ FanucPositionVariableLookup() + +

+ +

Default constructor.

+
+
+ +
+
public FanucPositionVariableLookup()
+
+ + + + + + + + + + + + + + + +

+ FanucPositionVariableLookup(XElement) + +

+ +

Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise.

+
+
+ +
+
public FanucPositionVariableLookup(XElement src)
+
+ +

Parameters

+
+
src XElement
+
+
+ + + + + + + + + + + +

Fields

@@ -283,6 +347,42 @@ long-lived dependency object that owns this data. +

Properties +

+ + + + +

+ XName + +

+ +

XML element name for Generators registration.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + +

Methods

@@ -331,6 +431,57 @@ this lookup's range or the value is vacant.

+ + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html index 37d81707..c434cdb8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html @@ -6,7 +6,7 @@ - + @@ -98,21 +98,30 @@ Class FanucToolOffsetVariableLookup

Fanuc-side adapter that exposes a wrapped ToolOffsetTable -as an IVariableLookup following Fanuc Memory C tool offset -addressing: #2001+N → effective height of offset N +(resolved at call time from the dependency list) as an +IRuntimeVariableLookup following Fanuc Memory C tool +offset addressing: #2001+N → effective height of offset N (geometry − wear).

The underlying ToolOffsetTable stays brand-neutral — Heidenhain / Siemens can use the same storage with different addressing -by registering their own adapter alongside the table. Holds a reference -to the table rather than owning data so writes through the table show -up immediately in lookups via this adapter. +by registering their own adapter alongside the table. Stateless: holds +no reference of its own and resolves the table from the per-call +dependencies list, so XML round-trip is trivial (an empty element). +

+

+Registered on a brand preset's +VariableEvaluatorSyntax.RuntimeVariableLookups, not on +NcDependencyList — the wrapper owns no +long-lived data, only the Fanuc-style id addressing scheme. The +underlying ToolOffsetTable still lives in +NcDependencyList as the data dependency.

-
public class FanucToolOffsetVariableLookup : INcDependency, IMakeXmlSource, IVariableLookup
+
public sealed class FanucToolOffsetVariableLookup : IRuntimeVariableLookup, IMakeXmlSource
@@ -129,9 +138,8 @@ up immediately in lookups via this adapter.
Implements
-
INcDependency
+
IRuntimeVariableLookup
IMakeXmlSource
-
IVariableLookup
@@ -151,9 +159,6 @@ up immediately in lookups via this adapter.
object.GetType()
-
- object.MemberwiseClone() -
object.ReferenceEquals(object, object)
@@ -203,7 +208,7 @@ up immediately in lookups via this adapter. -

Empty constructor for XFactory deserialisation; Table must be set explicitly.

+

Default constructor.

@@ -223,38 +228,6 @@ up immediately in lookups via this adapter. - - -

- FanucToolOffsetVariableLookup(ToolOffsetTable) - -

- -

Wraps the given table so it can serve Fanuc-style #2001+ reads.

-
-
- -
-
public FanucToolOffsetVariableLookup(ToolOffsetTable table)
-
- -

Parameters

-
-
table ToolOffsetTable
-
-
- - - - - - - - - - - -

@@ -262,7 +235,7 @@ up immediately in lookups via this adapter.

-

Loads from XML produced by MakeXmlSource(string, string, bool); Table is rebound by the runner after deserialisation.

+

Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise.

@@ -357,38 +330,6 @@ up immediately in lookups via this adapter. - - -

- Table - -

- -

Underlying brand-neutral tool offset storage.

-
-
- -
-
public ToolOffsetTable Table { get; set; }
-
- - - - - -

Property Value

-
-
ToolOffsetTable
-
-
- - - - - - - -

@@ -396,7 +337,7 @@ up immediately in lookups via this adapter.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

@@ -427,24 +368,30 @@ up immediately in lookups via this adapter. -

- Get(string) +

+ Get(string, LazyLinkedListNode<SyntaxPiece>, IReadOnlyList<INcDependency>)

Returns the value of the variable identified by key -(e.g. "#124"), or null if vacant or unknown to this lookup.

+in the context of node and +dependencies, or null if the key is outside +this lookup's range or the value is vacant.

-
public double? Get(string key)
+
public double? Get(string key, LazyLinkedListNode<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)

Parameters

key string
+
node LazyLinkedListNode<SyntaxPiece>
+
+
dependencies IReadOnlyList<INcDependency>
+

Returns

@@ -459,10 +406,12 @@ up immediately in lookups via this adapter. -

Remarks

+

Remarks

Routes #2001-#2200 to -GetToolHeightOffset_mm(int); other -keys return null so the evaluator's lookup chain falls through.

+GetToolHeightOffset_mm(int) on the +ToolOffsetTable found in dependencies; +other keys return null so the evaluator's lookup chain falls +through.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html index 8635bbfc..27539176 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html @@ -94,6 +94,43 @@

Classes

+
+
FanucGotoIterationDependency
+

Watchdog for Fanuc Custom Macro B GOTO loops. Holds a +MaxIterationsPerTarget limit (XML-persisted user config — +the soft cap above which the upcoming +FanucGotoSyntax stops firing and emits a warning) plus a +runtime per-target hit counter (CountByTarget — not +serialised, cleared at session start by +RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)).

+

+The dependency is syntax-managed: FanucGotoSyntax reads the +limit, increments the counter, and decides whether to fire. There is +no host Func provider — the dep is placed in +Hi.NcParsers.Dependencys.Fanuc rather than +Hi.NcParsers.Dependencys.SystemWired because nothing outside the +syntax pipeline writes it; Reset() is a plain method call +the runner invokes, not a host-wired Func. +

+

+The counter key is (FileName, TargetN) where FileName +is the source-level file path of the block containing the GOTO (the +relative path form carried on FilePath — same +form used by IndexedFileLine labels). Source-level keying means +multiple inline invocations of the same subprogram pool their counts +(they ARE the same source-code GOTO), while two different files with +their own N100 stay isolated (they ARE different jumps). +

+

+Default MaxIterationsPerTarget is 1000 — a runaway-loop +guard, not a precise iteration budget. Legitimate macro loops +(multi-hole drill matrices, calibration sweeps) sit well below this; +truly infinite loops hit the limit fast. Projects with batch-style +macros that legitimately need higher counts can raise the value in +the project XML. +

+
+
FanucParameterTable

Fanuc controller parameter table. @@ -118,15 +155,24 @@ long-lived dependency object that owns this data.

FanucToolOffsetVariableLookup

Fanuc-side adapter that exposes a wrapped ToolOffsetTable -as an IVariableLookup following Fanuc Memory C tool offset -addressing: #2001+N → effective height of offset N +(resolved at call time from the dependency list) as an +IRuntimeVariableLookup following Fanuc Memory C tool +offset addressing: #2001+N → effective height of offset N (geometry − wear).

The underlying ToolOffsetTable stays brand-neutral — Heidenhain / Siemens can use the same storage with different addressing -by registering their own adapter alongside the table. Holds a reference -to the table rather than owning data so writes through the table show -up immediately in lookups via this adapter. +by registering their own adapter alongside the table. Stateless: holds +no reference of its own and resolves the table from the per-call +dependencies list, so XML round-trip is trivial (an empty element). +

+

+Registered on a brand preset's +VariableEvaluatorSyntax.RuntimeVariableLookups, not on +NcDependencyList — the wrapper owns no +long-lived data, only the Fanuc-style id addressing scheme. The +underlying ToolOffsetTable still lives in +NcDependencyList as the data dependency.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html new file mode 100644 index 00000000..773d02d6 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html @@ -0,0 +1,322 @@ + + + + + Class CallStackUtil | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class CallStackUtil +

+ +
+
Namespace
Hi.NcParsers.EvaluationSyntaxs
+
Assembly
HiMech.dll
+
+ +

Push / pop helpers for the per-block CallStack section. +Both produce a fresh deep-cloned JsonObject ready to +stamp onto an inlined piece (push site) or onto an M99 return block +(pop site); the caller is responsible for deep-cloning again if it +distributes the same stamp across multiple pieces of an L-repetition.

+

+Pairs with ModalCarrySyntax at the +Logic stage: explicit push / pop writes seed the section at frame +boundaries, ModalCarry copies it forward to every block in between +so each block is self-contained for cache-dump readers and downstream +consumers (notably M99 P{seq} reading the top frame's +CallerFilePath). +

+
+
+ +
+
public static class CallStackUtil
+
+ + + + +
+
Inheritance
+
+ +
CallStackUtil
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ BuildPoppedCallStack(JsonObject) + +

+ +

Builds the post-pop CallStack section to stamp onto +an M99 return block. Reads the M99 block's currently-carried +stack, deep-clones it, and drops the top frame. Returns +null when there was no frame to pop (M99 in main file with +no caller — the runner treats this as program-end via the implicit +fall-through; no stamp is needed).

+
+
+ +
+
public static JsonObject BuildPoppedCallStack(JsonObject hostJson)
+
+ +

Parameters

+
+
hostJson JsonObject
+

The M99 block's JSON object (post-carry, before this pop runs).

+
+
+ +

Returns

+
+
JsonObject
+
+
+ + + + + + + + + + + + + +

+ BuildPushedCallStack(JsonObject, string) + +

+ +

Builds the post-push CallStack section to stamp onto +every inlined-body piece of a call. Reads the host block's current +stack (defaulting to empty when absent — main-frame caller), +deep-clones it, and appends a new CallFrame whose +CallerFilePath records where the call +originated. The returned JsonObject can be safely +deep-cloned by the caller for each piece in an L-repetition.

+
+
+ +
+
public static JsonObject BuildPushedCallStack(JsonObject hostJson, string callerFilePath)
+
+ +

Parameters

+
+
hostJson JsonObject
+

The call-host block's JSON object.

+
+
callerFilePath string
+

Project-relative path of the host file (typically FilePath on the host piece).

+
+
+ +

Returns

+
+
JsonObject
+
+
+ + + + + + + + + + + + + +

+ GetTopCallerFilePath(JsonObject) + +

+ +

Returns the top frame's CallerFilePath +from the given block's CallStack section, or +null when the stack is empty or absent (block is in the +main frame).

+
+
+ +
+
public static string GetTopCallerFilePath(JsonObject hostJson)
+
+ +

Parameters

+
+
hostJson JsonObject
+
+
+ +

Returns

+
+
string
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html index 6cacc766..d7e6dd64 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html @@ -6,7 +6,7 @@ - + @@ -115,11 +115,19 @@ Implementations should be brand-specific (e.g. Fanuc #5001-#5043 position reads) and return null for keys outside their range so the evaluator's chain can fall through to the next lookup.

+

+Implementations are XML-serialised as part of +VariableEvaluatorSyntax's round-trip: each impl exposes a +static XName, registers itself with Generators, +and implements MakeXmlSource(string, string, bool). Since impls +are stateless, the typical body is just an empty element carrying the +type name; brand identity is restored by XFactory dispatch. +

-
public interface IRuntimeVariableLookup
+
public interface IRuntimeVariableLookup : IMakeXmlSource
@@ -128,6 +136,13 @@ the evaluator's chain can fall through to the next lookup. +
+
Inherited Members
+
+ +
Extension Methods
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html index 2a16fb8e..dbbe1b21 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html @@ -6,7 +6,7 @@ - + @@ -99,18 +99,40 @@ Class LocalVariableLookup

Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current SyntaxPiece JSON, -walking Previous until the entry -is found. Self-gates the id range so the evaluator's +falling back to the immediately previous block when they share the +same MacroFrame id. Self-gates the id range +so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys.

+Two-step lookup (mirrors VolatileVariableLookup): the +current block sees writes that FanucMacroCallSyntax +stamped at inline time (the call-line argument bindings) and writes +that FanucLocalVariableReadingSyntax +applied on this block before the lookup runs; the previous block +(frame-checked) supplies body-internal writes from the prior block in +the same macro frame. Looking past the previous block is unnecessary +because the reader carries forward block-by-block within a frame. +

+

+Frame isolation via MacroFrame: a previous +block whose frame id differs from the current block's is skipped — +a macro body's body-internal locals are invisible to the caller after +return, and the caller's main-frame locals are invisible inside the +macro. M98/M198 subprogram inlining +(SubProgramCallSyntax) deliberately +does not stamp MacroFrame on its +inlined blocks, so the callee inherits the caller's frame and sees +the caller's locals — matching real Fanuc M98 semantics. +

+

Stateless and dependency-free — instances are interchangeable.

-
public class LocalVariableLookup : IRuntimeVariableLookup
+
public class LocalVariableLookup : IRuntimeVariableLookup, IMakeXmlSource
@@ -128,6 +150,7 @@ Stateless and dependency-free — instances are interchangeable.
Implements
+
@@ -188,6 +211,69 @@ Stateless and dependency-free — instances are interchangeable. +

Constructors +

+ + + + +

+ LocalVariableLookup() + +

+ +

Default constructor.

+
+
+ +
+
public LocalVariableLookup()
+
+ + + + + + + + + + + + + + + +

+ LocalVariableLookup(XElement) + +

+ +

Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise.

+
+
+ +
+
public LocalVariableLookup(XElement src)
+
+ +

Parameters

+
+
src XElement
+
+
+ + + + + + + + + + + +

Fields

@@ -254,6 +340,42 @@ Stateless and dependency-free — instances are interchangeable. +

Properties +

+ + + + +

+ XName + +

+ +

XML element name for Generators registration.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + +

Methods

@@ -302,6 +424,57 @@ this lookup's range or the value is vacant.

+ + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html index b46b2449..09225a8c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,11 @@ Class NcBinaryExpr
Assembly
HiMech.dll
-

Binary arithmetic on two operands (+ - * / or MOD).

+

Binary operation on two operands. Covers arithmetic +(+ - * / / MOD), comparison +(EQ NE GT GE LT LE, yielding 1.0 / 0.0), and +logical bitwise (AND OR XOR, operands truncated to +long).

@@ -190,7 +194,11 @@ Class NcBinaryExpr -

Binary arithmetic on two operands (+ - * / or MOD).

+

Binary operation on two operands. Covers arithmetic +(+ - * / / MOD), comparison +(EQ NE GT GE LT LE, yielding 1.0 / 0.0), and +logical bitwise (AND OR XOR, operands truncated to +long).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html index fdba4523..e7b7d148 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html @@ -148,10 +148,35 @@ Enum NcBinaryOp
Add = 0

a + b.

+
+
And = 11
+ +

a AND b — bitwise AND on operands truncated to long. +Non-finite or out-of-range operands surface Arithmetic–MathError.

Divide = 3

a / b.

+
+
Eq = 5
+ +

a EQ b — equal; yields 1.0 (true) or 0.0 (false).

+
+
Ge = 8
+ +

a GE b — greater than or equal; yields 1.0 or 0.0.

+
+
Gt = 7
+ +

a GT b — greater than; yields 1.0 or 0.0.

+
+
Le = 10
+ +

a LE b — less than or equal; yields 1.0 or 0.0.

+
+
Lt = 9
+ +

a LT b — less than; yields 1.0 or 0.0.

Mod = 4
@@ -160,10 +185,24 @@ Enum NcBinaryOp
Multiply = 2

a * b.

+
+
Ne = 6
+ +

a NE b — not equal; yields 1.0 or 0.0.

+
+
Or = 12
+ +

a OR b — bitwise OR on operands truncated to long. +Non-finite or out-of-range operands surface Arithmetic–MathError.

Subtract = 1

a - b.

+
+
Xor = 13
+ +

a XOR b — bitwise XOR on operands truncated to long. +Non-finite or out-of-range operands surface Arithmetic–MathError.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html index cbc1dbd6..3dc6dbdd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html @@ -6,7 +6,7 @@ - + @@ -109,6 +109,20 @@ Fanuc Custom Macro B convention. Unknown function names surface as errors (e.g. SQRT[-1]) as MathErrorCode; vacant operands as VacantErrorCode.

+

+Numeric domain & type conventions. All values are IEEE 754 +double — there is no separate bool / int type at runtime. +Comparison ops (EQ NE GT GE LT LE) yield 1.0 (true) or +0.0 (false), using strict double equality / ordering (NaN +compares as IEEE specifies — NaN EQ NaN is 0.0). Logical +ops (AND OR XOR) truncate each operand to a 64-bit signed +integer (Truncate(double) then cast to +long) before applying the bitwise operation; non-finite +or out-of-range operands surface MathErrorCode rather +than silently wrapping. Truthiness at caller-side IF / WHILE +gates is value != 0 — any non-zero value (bit, float, comparator +result) is true. +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html index 76facef2..c532bb6b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html @@ -6,7 +6,7 @@ - + @@ -100,22 +100,37 @@ Class NcExpressionParser

Recursive-descent parser for Fanuc Custom Macro B value expressions. Pure: takes a string, produces an NcExpr AST. Performs no variable lookup and no evaluation.

-

Grammar (highest precedence last):

-
expr    := term (('+' | '-') term)*
-term    := factor (('*' | '/' | 'MOD') factor)*
-factor  := ('+' | '-')? primary
-primary := number
-        | '#' integer
-        | '#' '[' expr ']'
-        | '[' expr ']'
-        | ident '[' arglist ']' ('/' '[' expr ']')?
-arglist := expr (',' expr)*
+

Grammar (lowest precedence at top):

+
expr     := or-expr
+or-expr  := and-expr (('OR' | 'XOR') and-expr)*
+and-expr := cmp-expr ('AND' cmp-expr)*
+cmp-expr := add-expr (('EQ' | 'NE' | 'GT' | 'GE' | 'LT' | 'LE') add-expr)*
+add-expr := term (('+' | '-') term)*
+term     := factor (('*' | '/' | 'MOD') factor)*
+factor   := ('+' | '-')? primary
+primary  := number
+         | '#' integer
+         | '#' '[' expr ']'
+         | '[' expr ']'
+         | ident '[' arglist ']' ('/' '[' expr ']')?
+arglist  := expr (',' expr)*

-Function names are case-insensitive (SIN = sin); whitespace -is skipped between tokens. The '/' '[' expr ']' tail captures the -dual-bracket form Fanuc uses for ATAN[a]/[b]; non-ATAN callers that -happen to use it produce a function with an extra arg, which the evaluator -rejects with an arity error. +Function names and keyword operators (MOD, EQ NE GT GE LT LE, +AND OR XOR) are case-insensitive (SIN = sin, +EQ = eq); each keyword requires a non-identifier character +on its right boundary so EQ1 is not the EQ operator +followed by 1. Whitespace is skipped between tokens. The +'/' '[' expr ']' tail captures the dual-bracket form Fanuc uses +for ATAN[a]/[b]; non-ATAN callers that happen to use it produce a +function with an extra arg, which the evaluator rejects with an arity +error. +

+

+Operator precedence intentionally puts boolean / logical layers below +arithmetic so #1 + 1 GT 0 parses as (#1 + 1) GT 0 and +#1 GT 0 AND #2 LT 10 parses as (#1 GT 0) AND (#2 LT 10), +matching the Fanuc Custom Macro B spec for IF [..] GOTO / +IF [..] THEN / WHILE [..] DO conditions.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html index 0275ea9d..641fc35f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html @@ -6,7 +6,7 @@ - + @@ -98,22 +98,29 @@ Class VolatileVariableLookup

Reads Fanuc-style non-retained common variables (#100-#499) -from Vars.Volatile on the current SyntaxPiece -JSON, walking Previous until the -entry is found. Self-gates the id range so the evaluator's +from Vars.Volatile. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys.

-Stateless and dependency-free — instances are interchangeable. -Reads use the same dict-merge carry that -VolatileVariableReadingSyntax writes; the two stay -decoupled (read side here; write side in the reader). +Single-step lookup: VolatileVariableReadingSyntax already +dict-merges every block's Vars.Volatile into the next block, so +the entry — if it exists — must be on the current block (when this +lookup runs after the reader) or on the immediately previous block +(when this lookup runs before the reader on the same block, which is +the Fanuc preset's order — evaluator first, reader second). No +arbitrary walk-back: such a walk would be defensive overkill given +the reader's carry guarantee. +

+

+Stateless and dependency-free — instances are interchangeable. Reads +stay decoupled from the reader (read side here; write side in the +reader).

-
public class VolatileVariableLookup : IRuntimeVariableLookup
+
public class VolatileVariableLookup : IRuntimeVariableLookup, IMakeXmlSource
@@ -131,6 +138,7 @@ decoupled (read side here; write side in the reader).
Implements
IRuntimeVariableLookup
+
IMakeXmlSource
@@ -191,6 +199,105 @@ decoupled (read side here; write side in the reader). +

Constructors +

+ + + + +

+ VolatileVariableLookup() + +

+ +

Default constructor.

+
+
+ +
+
public VolatileVariableLookup()
+
+ + + + + + + + + + + + + + + +

+ VolatileVariableLookup(XElement) + +

+ +

Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise.

+
+
+ +
+
public VolatileVariableLookup(XElement src)
+
+ +

Parameters

+
+
src XElement
+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name for Generators registration.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + +

Methods

@@ -239,6 +346,57 @@ this lookup's range or the value is vacant.

+ + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html index c1f4e970..18e9ab95 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html @@ -98,18 +98,44 @@ Classes
LocalVariableLookup

Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current SyntaxPiece JSON, -walking Previous until the entry -is found. Self-gates the id range so the evaluator's +falling back to the immediately previous block when they share the +same MacroFrame id. Self-gates the id range +so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys.

+Two-step lookup (mirrors VolatileVariableLookup): the +current block sees writes that FanucMacroCallSyntax +stamped at inline time (the call-line argument bindings) and writes +that FanucLocalVariableReadingSyntax +applied on this block before the lookup runs; the previous block +(frame-checked) supplies body-internal writes from the prior block in +the same macro frame. Looking past the previous block is unnecessary +because the reader carries forward block-by-block within a frame. +

+

+Frame isolation via MacroFrame: a previous +block whose frame id differs from the current block's is skipped — +a macro body's body-internal locals are invisible to the caller after +return, and the caller's main-frame locals are invisible inside the +macro. M98/M198 subprogram inlining +(SubProgramCallSyntax) deliberately +does not stamp MacroFrame on its +inlined blocks, so the callee inherits the caller's frame and sees +the caller's locals — matching real Fanuc M98 semantics. +

+

Stateless and dependency-free — instances are interchangeable.

NcBinaryExpr
-

Binary arithmetic on two operands (+ - * / or MOD).

+

Binary operation on two operands. Covers arithmetic +(+ - * / / MOD), comparison +(EQ NE GT GE LT LE, yielding 1.0 / 0.0), and +logical bitwise (AND OR XOR, operands truncated to +long).

@@ -133,6 +159,20 @@ Fanuc Custom Macro B convention. Unknown function names surface as errors (e.g. SQRT[-1]) as MathErrorCode; vacant operands as VacantErrorCode.

+

+Numeric domain & type conventions. All values are IEEE 754 +double — there is no separate bool / int type at runtime. +Comparison ops (EQ NE GT GE LT LE) yield 1.0 (true) or +0.0 (false), using strict double equality / ordering (NaN +compares as IEEE specifies — NaN EQ NaN is 0.0). Logical +ops (AND OR XOR) truncate each operand to a 64-bit signed +integer (Truncate(double) then cast to +long) before applying the bitwise operation; non-finite +or out-of-range operands surface MathErrorCode rather +than silently wrapping. Truthiness at caller-side IF / WHILE +gates is value != 0 — any non-zero value (bit, float, comparator +result) is true. +

@@ -140,22 +180,37 @@ operands as NcExpr AST. Performs no variable lookup and no evaluation.

-

Grammar (highest precedence last):

-
expr    := term (('+' | '-') term)*
-term    := factor (('*' | '/' | 'MOD') factor)*
-factor  := ('+' | '-')? primary
-primary := number
-        | '#' integer
-        | '#' '[' expr ']'
-        | '[' expr ']'
-        | ident '[' arglist ']' ('/' '[' expr ']')?
-arglist := expr (',' expr)*
+

Grammar (lowest precedence at top):

+
expr     := or-expr
+or-expr  := and-expr (('OR' | 'XOR') and-expr)*
+and-expr := cmp-expr ('AND' cmp-expr)*
+cmp-expr := add-expr (('EQ' | 'NE' | 'GT' | 'GE' | 'LT' | 'LE') add-expr)*
+add-expr := term (('+' | '-') term)*
+term     := factor (('*' | '/' | 'MOD') factor)*
+factor   := ('+' | '-')? primary
+primary  := number
+         | '#' integer
+         | '#' '[' expr ']'
+         | '[' expr ']'
+         | ident '[' arglist ']' ('/' '[' expr ']')?
+arglist  := expr (',' expr)*

-Function names are case-insensitive (SIN = sin); whitespace -is skipped between tokens. The '/' '[' expr ']' tail captures the -dual-bracket form Fanuc uses for ATAN[a]/[b]; non-ATAN callers that -happen to use it produce a function with an extra arg, which the evaluator -rejects with an arity error. +Function names and keyword operators (MOD, EQ NE GT GE LT LE, +AND OR XOR) are case-insensitive (SIN = sin, +EQ = eq); each keyword requires a non-identifier character +on its right boundary so EQ1 is not the EQ operator +followed by 1. Whitespace is skipped between tokens. The +'/' '[' expr ']' tail captures the dual-bracket form Fanuc uses +for ATAN[a]/[b]; non-ATAN callers that happen to use it produce a +function with an extra arg, which the evaluator rejects with an arity +error. +

+

+Operator precedence intentionally puts boolean / logical layers below +arithmetic so #1 + 1 GT 0 parses as (#1 + 1) GT 0 and +#1 GT 0 AND #2 LT 10 parses as (#1 GT 0) AND (#2 LT 10), +matching the Fanuc Custom Macro B spec for IF [..] GOTO / +IF [..] THEN / WHILE [..] DO conditions.

@@ -191,16 +246,23 @@ is then
VolatileVariableLookup

Reads Fanuc-style non-retained common variables (#100-#499) -from Vars.Volatile on the current SyntaxPiece -JSON, walking Previous until the -entry is found. Self-gates the id range so the evaluator's +from Vars.Volatile. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys.

-Stateless and dependency-free — instances are interchangeable. -Reads use the same dict-merge carry that -VolatileVariableReadingSyntax writes; the two stay -decoupled (read side here; write side in the reader). +Single-step lookup: VolatileVariableReadingSyntax already +dict-merges every block's Vars.Volatile into the next block, so +the entry — if it exists — must be on the current block (when this +lookup runs after the reader) or on the immediately previous block +(when this lookup runs before the reader on the same block, which is +the Fanuc preset's order — evaluator first, reader second). No +arbitrary walk-back: such a walk would be defensive overkill given +the reader's carry guarantee. +

+

+Stateless and dependency-free — instances are interchangeable. Reads +stay decoupled from the reader (read side here; write side in the +reader).

@@ -237,6 +299,14 @@ Implementations should be brand-specific (e.g. Fanuc #5001-#5043 position reads) and return null for keys outside their range so the evaluator's chain can fall through to the next lookup.

+

+Implementations are XML-serialised as part of +VariableEvaluatorSyntax's round-trip: each impl exposes a +static XName, registers itself with Generators, +and implements MakeXmlSource(string, string, bool). Since impls +are stateless, the typical body is just an empty element carrying the +type name; brand identity is restored by XFactory dispatch. +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html new file mode 100644 index 00000000..7fe61dfb --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html @@ -0,0 +1,526 @@ + + + + + Class FanucGotoSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucGotoSyntax +

+ +
+
Namespace
Hi.NcParsers.EvaluationSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Resolves Fanuc Custom Macro B GOTO control flow. +Triggered by Parsing.FanucGoto (written by +FanucGotoParsingSyntax); decides whether +to fire, and on fire calls +ReplaceSource(IEnumerable<T>) on layers[0] with +the re-segmented file content starting at the matching N{target} +label. The host block stays materialised (so cache dumps still see the +GOTO call site); execution naturally continues from the new source +once the pipeline pulls the next block.

+

+Both unconditional GOTO <n> and conditional +IF [<expr>] GOTO <n> are implemented. The conditional +form leans on VariableEvaluatorSyntax's pass-2 tree walk +to substitute Parsing.FanucGoto.Condition with a numeric +JsonValue when the expression +evaluates successfully — ReadCondition(JsonNode) then reads the +node polymorphically. Truthy non-zero fires the redirect; zero falls +through silently; a still-string (unresolved) Condition emits +FanucGoto--ConditionNotEvaluated and falls through. +

+

+Pipeline placement: tail of the Fanuc / Mazak / Syntec Evaluation +bundle. Must run after VariableEvaluatorSyntax so any +#<var> in the target N (e.g. GOTO #1) has been +substituted to a literal in Parsing.FanucGoto.N. Reader syntaxes +(VolatileVariableReadingSyntax etc.) are independent — +they touch Parsing.Assignments, not Parsing.FanucGoto. +

+

+Label scanning uses two hosted helper syntaxes — +CommentSyntax and IndexSyntax — applied to +each candidate block in turn so the predicate +IndexNote.Number == target matches the same way the Parsing +bundle would. Both are XML-IO-able so API customers can swap them +(e.g. for a controller variant using ;-style comments or a +different head symbol). Defaults match Fanuc: QuoteCommentSyntax +and HeadIndexSyntax with the "N" symbol. +

+
+
+ +
+
public class FanucGotoSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucGotoSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FanucGotoSyntax() + +

+ +

Parameterless instance with default helper syntaxes.

+
+
+ +
+
public FanucGotoSyntax()
+
+ + + + + + + + + + + + + + + +

+ FanucGotoSyntax(XElement, string, IProgress<object>) + +

+ +

Loads hosted helper syntaxes from XML produced by +MakeXmlSource(string, string, bool). The <LabelProbeSyntaxes> +wrapper contains one child element per probe syntax in source +order; an absent wrapper falls back to the default list.

+
+
+ +
+
public FanucGotoSyntax(XElement src, string baseDirectory, IProgress<object> progress)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
baseDirectory string
+

Project base directory propagated to child XFactory calls.

+
+
progress IProgress<object>
+

Diagnostic sink propagated to child factories.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ LabelProbeSyntaxes + +

+ +

Ordered list of helper syntaxes run on each candidate block during +the label scan before the IndexNote.Number == target +predicate is checked. The defaults match Fanuc — QuoteCommentSyntax +strips parenthesised comments so a commented-out (N100) never +matches, then HeadIndexSyntax with symbol “N” +extracts the head index into IndexNote.Number.

+

+Exposed as a list (rather than two fixed properties) so API +customers can insert additional probe syntaxes — for example a +TailCommentSyntax for ;-style end-of-block +comments alongside the parenthesised form, or a +BlockSkipSyntax to skip /-prefixed blocks +from the label-scan results. Order matters: comment-strippers +before the head-index parser, the index parser last (so its output +reflects the post-strip text). +

+
+
+ +
+
public List<ISituNcSyntax> LabelProbeSyntaxes { get; set; }
+
+ + + + + +

Property Value

+
+
List<ISituNcSyntax>
+
+
+ + + + + + + + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

+
+
+ +
+
public string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this syntax with XFactory.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

+ +

Build syntax arrangement into the +syntaxPieceNode in-place.

+
+
+ +
+
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+ +

Parameters

+
+
syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+
ncDependencyList List<INcDependency>
+
+
ncDiagnosticProgress NcDiagnosticProgress
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html new file mode 100644 index 00000000..defb9df4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html @@ -0,0 +1,473 @@ + + + + + Class FanucIfThenSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucIfThenSyntax +

+ +
+
Namespace
Hi.NcParsers.EvaluationSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Resolves Fanuc Custom Macro B IF [<cond>] THEN <body> +single-block conditionals. Triggered by Parsing.FanucIfThen +(written by FanucIfThenParsingSyntax); +reads the now-resolved Condition node, decides +whether to fire, and on fire lifts the parsing-stage +PendingAssignments sub-object into the canonical +Parsing.Assignments bucket so the brand-specific reader syntaxes +downstream route each entry to its store the same way they would handle +an unconditional #nnn = <literal> on a normal block.

+

+Unlike FanucGotoSyntax there is no source splice, no +label scan, no iteration watchdog — the spec restricts the body to the +current block. The host block is preserved either way (the stamped +FanucIfThen section on the host's top-level JSON keeps the +IF-THEN call site visible to cache dumps and diagnostics, with +Applied flipped true only on a successful +fire). +

+

+Pipeline placement: in the Evaluation bundle after +VariableEvaluatorSyntax (so the Condition expression has +been substituted in place by pass-2 tree walk, and each +PendingAssignments RHS string has been evaluated to a numeric +JsonValue) and before the reader syntaxes +(VolatileVariableReadingSyntax, +RetainedCommonVariableReadingSyntax, +FanucLocalVariableReadingSyntax, +FanucSystemControlVariableSyntax) — that ordering lets +the lifted entries reach the readers as if they had been written by +TagAssignmentSyntax on a normal block. +

+

+Three condition outcomes mirror the +ReadCondition(JsonNode) shape: +

  • Truthy non-zero → lift assignments, stamp Applied=true.
  • Truthy zero → fall through silently, Applied=false.
  • Truthy null (evaluator failed, condition still a string or + non-finite) → warn FanucIfThen--ConditionNotEvaluated, do not + lift, Applied=false.
+A truthy condition with no PendingAssignments (body did not parse as +one or more assignments — e.g. a G-code body, currently unsupported) +warns FanucIfThen--UnsupportedBody and falls through. + +
+
+ +
+
public class FanucIfThenSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucIfThenSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FanucIfThenSyntax() + +

+ +

Parameterless instance (no XML state).

+
+
+ +
+
public FanucIfThenSyntax()
+
+ + + + + + + + + + + + + + + +

+ FanucIfThenSyntax(XElement) + +

+ +

XML ctor (no child elements; reserved for forward compatibility).

+
+
+ +
+
public FanucIfThenSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

+
+
+ +
+
public string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this syntax with XFactory.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

+ +

Build syntax arrangement into the +syntaxPieceNode in-place.

+
+
+ +
+
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+ +

Parameters

+
+
syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+
ncDependencyList List<INcDependency>
+
+
ncDiagnosticProgress NcDiagnosticProgress
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html new file mode 100644 index 00000000..7f3ecdfb --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html @@ -0,0 +1,531 @@ + + + + + Class FanucLocalVariableReadingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucLocalVariableReadingSyntax +

+ +
+
Namespace
Hi.NcParsers.EvaluationSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Routes literal-RHS assignments to Fanuc-style local macro variables +(#1-#33) from Parsing.Assignments into Vars.Local +on the current block, carrying the previous block's Vars.Local +dict forward when both blocks share the same +MacroFrame id. Mirrors +VolatileVariableReadingSyntax for the +#100-#499 range, with two differences:

+
  • Carry is gated by MacroFrame equality, so a +caller block after a G65 return does not inherit the macro body's +final locals.
  • Writes outside a macro frame (a main-program block doing +#11 = 5) emit +LocalVariable--MainFrameWriteUnsupported and consume the +assignment without persisting — real Fanuc allows main-frame local +writes but this simulator only tracks locals inside G65/G66 call +frames; surfacing the gap as a diagnostic is more informative than +a silent +UnconsumedCheckSyntax hit.
+

+Pipeline placement: Evaluation bundle, after +VariableEvaluatorSyntax (so any expression RHS such as +#11 = #1 + 1 has already been normalised to a literal by the +time this reader runs) and after the other range readers +(RetainedCommonVariableReadingSyntax, +VolatileVariableReadingSyntax) so they all share a +similar Reader-stage shape. +

+

+Only literal numeric RHS values are consumed here; non-literal +entries (which can only persist if +VariableEvaluatorSyntax failed to resolve them) are +left untouched and surface via the evaluator's own +VariableExpression--Unevaluated diagnostic plus +UnconsumedCheckSyntax. +

+
+
+ +
+
public class FanucLocalVariableReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucLocalVariableReadingSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FanucLocalVariableReadingSyntax() + +

+ +

Default constructor.

+
+
+ +
+
public FanucLocalVariableReadingSyntax()
+
+ + + + + + + + + + + + + + + +

+ FanucLocalVariableReadingSyntax(XElement) + +

+ +

Loads from XML produced by MakeXmlSource(string, string, bool); no state.

+
+
+ +
+
public FanucLocalVariableReadingSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ LocalMax + +

+ +

Inclusive upper bound of the local range (#33).

+
+
+ +
+
public const int LocalMax = 33
+
+ + + + +

Field Value

+
+
int
+
+
+ + + + + + + + + + +

+ LocalMin + +

+ +

Inclusive lower bound of the local range (#1).

+
+
+ +
+
public const int LocalMin = 1
+
+ + + + +

Field Value

+
+
int
+
+
+ + + + + + + + + +

Properties +

+ + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

+
+
+ +
+
public string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name for Generators registration.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

+ +

Build syntax arrangement into the +syntaxPieceNode in-place.

+
+
+ +
+
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+ +

Parameters

+
+
syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+
ncDependencyList List<INcDependency>
+
+
ncDiagnosticProgress NcDiagnosticProgress
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html new file mode 100644 index 00000000..3b77e039 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html @@ -0,0 +1,223 @@ + + + + + Class FanucMacroArgumentMap | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucMacroArgumentMap +

+ +
+
Namespace
Hi.NcParsers.EvaluationSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Fanuc Custom Macro B Type-I argument-letter map: which call-line letter +binds to which Vars.Local id (#1-#26) inside the macro body. +Reserved letters (G, L, N, O, P) are +absent — they are consumed by the call itself, not passed through.

+

+Used by FanucMacroCallSyntax (G65, one-shot) and +FanucModalMacroSyntax (G66, modal) to translate the +argument letters captured by G65Syntax +/ G66Syntax into the +#nnn bindings the macro body's expression evaluator can read. +

+
+
+ +
+
public static class FanucMacroArgumentMap
+
+ + + + +
+
Inheritance
+
+ +
FanucMacroArgumentMap
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ Map + +

+ +

Fanuc Custom Macro B Type-I letter-to-local-id map. Single-value +per letter; Type-II's repeating I_J_K_ array binding is not +modelled here.

+
+
+ +
+
public static readonly IReadOnlyDictionary<string, int> Map
+
+ + + + +

Field Value

+
+
IReadOnlyDictionary<string, int>
+
+
+ + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html new file mode 100644 index 00000000..7fe192ce --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html @@ -0,0 +1,487 @@ + + + + + Class FanucMacroCallSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucMacroCallSyntax +

+ +
+
Namespace
Hi.NcParsers.EvaluationSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Inlines a Fanuc Custom Macro B one-shot call (G65 P_ L_ [letter +value …]) into the source layer and binds the call-line argument +letters to Vars.Local #1-#26 per the Type-I map (see +FanucMacroArgumentMap). Every inlined block carries the +binding dict, a clone of the FanucMacroCall diagnostic +record, and a MacroFrame id stamp — so +LocalVariableLookup resolves arg references in a +single-block lookup, a cache dump landing on any block immediately +shows which call it belongs to, and downstream +FanucLocalVariableReadingSyntax carries body-internal +#1-#33 writes forward only within the same frame. The host +block itself records FanucMacroCall but stays in the +caller's frame (no MacroFrame stamp) and emits no +motion act; after the macro body's last inlined block the pipeline +continues naturally into the caller's next block (the inlined pieces +sit ahead of the host block's successor in layers[0]).

+

+Frame isolation works on two layers. Statically, caller blocks +have no MacroFrame stamp (frame id 0 by +Get(JsonObject)), so the inlined frame ids (allocated +fresh per L-repetition) never collide with main. Dynamically, +LocalVariableLookup and +FanucLocalVariableReadingSyntax compare frame ids +before carrying any Vars.Local entry across a block boundary +— a macro body's body-internal writes therefore stay inside the +macro and never leak back into the caller's frame. +

+

+Filename lookup mirrors SubProgramCallSyntax: +O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, +{P:D4}.NC, {P}.NC — first match wins. The lookup root +is InternalFolder (G65 has no +"external storage" variant; M198's external root is M98/M198-only). +

+

+L > 1 inlines the same macro L times in series. Each +repetition is a fresh segmentation pass (so each block gets its own +SyntaxPiece JSON object — the downstream pipeline +mutates JSON in place and would clobber sibling repetitions if +instances were shared) and gets a fresh FileIndex (so +(FileIndex, LineIndex) pairs stay unique across the +L-copies of the same source lines). +

+

+Pipeline placement: ahead of SubProgramCallSyntax inside +the Fanuc Evaluation BundleSyntax +so a hypothetical G65 P_ + M98 P_ on the same block +expands the G65 macro first (would be an unusual but legal +composition). Detection is on the Parsing.G65 sub-object +written by G65Syntax +(a ParameterizedFlagSyntax) — the +keyword "G65" never reaches Parsing.Flags because the +parameterized match has already consumed the text by the time +NumberedFlagSyntax runs. +

+
+
+ +
+
public class FanucMacroCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucMacroCallSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FanucMacroCallSyntax() + +

+ +

Parameterless instance for bundle composition (no XML state).

+
+
+ +
+
public FanucMacroCallSyntax()
+
+ + + + + + + + + + + + + + + +

+ FanucMacroCallSyntax(XElement) + +

+ +

XML ctor (no child elements; reserved for forward compatibility).

+
+
+ +
+
public FanucMacroCallSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

+
+
+ +
+
public string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this syntax with XFactory.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

+ +

Build syntax arrangement into the +syntaxPieceNode in-place.

+
+
+ +
+
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+ +

Parameters

+
+
syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+
ncDependencyList List<INcDependency>
+
+
ncDiagnosticProgress NcDiagnosticProgress
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html new file mode 100644 index 00000000..3a496bd0 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html @@ -0,0 +1,191 @@ + + + + + Enum FanucModalMacroSyntax.SyntaxPhase | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+Enum FanucModalMacroSyntax.SyntaxPhase +

+ +
+
Namespace
Hi.NcParsers.EvaluationSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Identifies which pipeline phase the instance runs in. The two +values correspond to the Evaluation-bundle and PostLogic-bundle +registrations of this same syntax class.

+
+
+ +
+
public enum FanucModalMacroSyntax.SyntaxPhase
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + + +
+ +

Fields +

+
+
Expansion = 1
+ +

PostLogic phase: on every motion-producing block (signalled +by MotionEvent presence) that sits inside an +active G66 modal AND lives in the main frame +(MacroFrame == 0), inlines the modal macro +body — same call mechanism as FanucMacroCallSyntax.

+
+
Setup = 0
+ +

Evaluation phase: captures G66 setup / G67 +cancel edges into FanucModalMacro and carries +the section forward block-to-block.

+
+
+ + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html new file mode 100644 index 00000000..2bc9bbb4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html @@ -0,0 +1,547 @@ + + + + + Class FanucModalMacroSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucModalMacroSyntax +

+ +
+
Namespace
Hi.NcParsers.EvaluationSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Handles Fanuc Custom Macro B modal-call lifecycle (G66 setup, +G67 cancel, and per-motion-block implicit macro invocation). +The same class is registered twice in the pipeline via +Phase — once in the Evaluation bundle +(Setup, captures G66/G67 edges and carries +the FanucModalMacro state block-to-block) and once in +the PostLogic bundle (Expansion, on every +motion block within an active G66 modal, inlines the macro body via +the same mechanism FanucMacroCallSyntax uses).

+

+Keeping both phases in one class makes the pairing visually explicit: +readers see "G66 in one file" and the two methods (DoSetup, +DoExpansion) make the lifecycle obvious. The two factory +helpers (Setup, Expansion) mirror the +ModalCarrySyntax.Logic / .PostLogic pattern already in +the codebase. +

+
+
+ +
+
public class FanucModalMacroSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucModalMacroSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FanucModalMacroSyntax() + +

+ +

Parameterless instance (defaults to Setup).

+
+
+ +
+
public FanucModalMacroSyntax()
+
+ + + + + + + + + + + + + + + +

+ FanucModalMacroSyntax(XElement) + +

+ +

XML ctor. Reads <Phase> child element; legacy +project files without it default to Setup +(the pre-expansion behaviour).

+
+
+ +
+
public FanucModalMacroSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Expansion + +

+ +

Factory: PostLogic-bundle instance that performs implicit motion-block expansion.

+
+
+ +
+
public static FanucModalMacroSyntax Expansion { get; }
+
+ + + + + +

Property Value

+
+
FanucModalMacroSyntax
+
+
+ + + + + + + + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

+
+
+ +
+
public string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Phase + +

+ +

Pipeline phase this instance runs in. Defaults to Setup.

+
+
+ +
+
public FanucModalMacroSyntax.SyntaxPhase Phase { get; set; }
+
+ + + + + +

Property Value

+
+
FanucModalMacroSyntax.SyntaxPhase
+
+
+ + + + + + + + + + +

+ Setup + +

+ +

Factory: Evaluation-bundle instance that handles G66/G67 setup + carry.

+
+
+ +
+
public static FanucModalMacroSyntax Setup { get; }
+
+ + + + + +

Property Value

+
+
FanucModalMacroSyntax
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this syntax with XFactory.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

+ +

Build syntax arrangement into the +syntaxPieceNode in-place.

+
+
+ +
+
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+ +

Parameters

+
+
syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+
ncDependencyList List<INcDependency>
+
+
ncDiagnosticProgress NcDiagnosticProgress
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html similarity index 81% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html index f9144b82..9f0e9319 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html @@ -84,16 +84,16 @@ -
+
-

+

Class FanucSystemControlVariableSyntax

-
Namespace
Hi.NcParsers.EvaluationSyntaxs
+
Namespace
Hi.NcParsers.EvaluationSyntaxs.Fanuc
Assembly
HiMech.dll
@@ -114,7 +114,7 @@ effect. Instead it:

  1. records the literal write on the block JSON under Vars.SystemControl (round-trip and cache-dump visibility);
  2. emits a FanucSystemControl--Unsupported -UnsupportedMessage(Sentence, string, string, object) +UnsupportedMessage(ISentenceCarrier, string, string, object) so the user knows the assignment was recognised but its controller-side effect is not simulated. Message-severity (not Warning) because these writes are safe no-ops offline — every consumed assignment would emit @@ -225,9 +225,9 @@ Fanuc-family only — Siemens uses named system variables - + -

    +

    FanucSystemControlVariableSyntax()

    @@ -252,14 +252,14 @@ Fanuc-family only — Siemens uses named system variables - + -

    +

    FanucSystemControlVariableSyntax(XElement)

    -

    Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.

    +

    Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.

    @@ -289,7 +289,7 @@ Fanuc-family only — Siemens uses named system variables -

    +

    SystemControlMax

    @@ -320,7 +320,7 @@ Fanuc-family only — Siemens uses named system variables -

    +

    SystemControlMin

    @@ -351,7 +351,7 @@ Fanuc-family only — Siemens uses named system variables -

    +

    UnsupportedDiagId

    @@ -386,9 +386,9 @@ assignment — recognised by the parser, ignored by simulation.

    - + -

    +

    Name

    @@ -418,14 +418,14 @@ assignment — recognised by the parser, ignored by simulation.

    - + -

    +

    XName

    -

    XML element name for Regs registration.

    +

    XML element name for Generators registration.

    @@ -454,9 +454,9 @@ assignment — recognised by the parser, ignored by simulation.

    - + -

    +

    Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)

    @@ -491,9 +491,9 @@ assignment — recognised by the parser, ignored by simulation.

    - + -

    +

    MakeXmlSource(string, string, bool)

    @@ -533,7 +533,7 @@ This method may also generate additional resources such as related files.

    -

    Remarks

    +

    Remarks

    For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html new file mode 100644 index 00000000..76942516 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html @@ -0,0 +1,396 @@ + + + + + Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + +

    Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc

    +
    +
    +
    + +

    +Classes +

    +
    +
    FanucGotoSyntax
    +

    Resolves Fanuc Custom Macro B GOTO control flow. +Triggered by Parsing.FanucGoto (written by +FanucGotoParsingSyntax); decides whether +to fire, and on fire calls +ReplaceSource(IEnumerable<T>) on layers[0] with +the re-segmented file content starting at the matching N{target} +label. The host block stays materialised (so cache dumps still see the +GOTO call site); execution naturally continues from the new source +once the pipeline pulls the next block.

    +

    +Both unconditional GOTO <n> and conditional +IF [<expr>] GOTO <n> are implemented. The conditional +form leans on VariableEvaluatorSyntax's pass-2 tree walk +to substitute Parsing.FanucGoto.Condition with a numeric +JsonValue when the expression +evaluates successfully — ReadCondition(JsonNode) then reads the +node polymorphically. Truthy non-zero fires the redirect; zero falls +through silently; a still-string (unresolved) Condition emits +FanucGoto--ConditionNotEvaluated and falls through. +

    +

    +Pipeline placement: tail of the Fanuc / Mazak / Syntec Evaluation +bundle. Must run after VariableEvaluatorSyntax so any +#<var> in the target N (e.g. GOTO #1) has been +substituted to a literal in Parsing.FanucGoto.N. Reader syntaxes +(VolatileVariableReadingSyntax etc.) are independent — +they touch Parsing.Assignments, not Parsing.FanucGoto. +

    +

    +Label scanning uses two hosted helper syntaxes — +CommentSyntax and IndexSyntax — applied to +each candidate block in turn so the predicate +IndexNote.Number == target matches the same way the Parsing +bundle would. Both are XML-IO-able so API customers can swap them +(e.g. for a controller variant using ;-style comments or a +different head symbol). Defaults match Fanuc: QuoteCommentSyntax +and HeadIndexSyntax with the "N" symbol. +

    +
    +
    +
    +
    FanucIfThenSyntax
    +

    Resolves Fanuc Custom Macro B IF [<cond>] THEN <body> +single-block conditionals. Triggered by Parsing.FanucIfThen +(written by FanucIfThenParsingSyntax); +reads the now-resolved Condition node, decides +whether to fire, and on fire lifts the parsing-stage +PendingAssignments sub-object into the canonical +Parsing.Assignments bucket so the brand-specific reader syntaxes +downstream route each entry to its store the same way they would handle +an unconditional #nnn = <literal> on a normal block.

    +

    +Unlike FanucGotoSyntax there is no source splice, no +label scan, no iteration watchdog — the spec restricts the body to the +current block. The host block is preserved either way (the stamped +FanucIfThen section on the host's top-level JSON keeps the +IF-THEN call site visible to cache dumps and diagnostics, with +Applied flipped true only on a successful +fire). +

    +

    +Pipeline placement: in the Evaluation bundle after +VariableEvaluatorSyntax (so the Condition expression has +been substituted in place by pass-2 tree walk, and each +PendingAssignments RHS string has been evaluated to a numeric +JsonValue) and before the reader syntaxes +(VolatileVariableReadingSyntax, +RetainedCommonVariableReadingSyntax, +FanucLocalVariableReadingSyntax, +FanucSystemControlVariableSyntax) — that ordering lets +the lifted entries reach the readers as if they had been written by +TagAssignmentSyntax on a normal block. +

    +

    +Three condition outcomes mirror the +ReadCondition(JsonNode) shape: +

    • Truthy non-zero → lift assignments, stamp Applied=true.
    • Truthy zero → fall through silently, Applied=false.
    • Truthy null (evaluator failed, condition still a string or + non-finite) → warn FanucIfThen--ConditionNotEvaluated, do not + lift, Applied=false.
    +A truthy condition with no PendingAssignments (body did not parse as +one or more assignments — e.g. a G-code body, currently unsupported) +warns FanucIfThen--UnsupportedBody and falls through. + +
    +
    +
    +
    FanucLocalVariableReadingSyntax
    +

    Routes literal-RHS assignments to Fanuc-style local macro variables +(#1-#33) from Parsing.Assignments into Vars.Local +on the current block, carrying the previous block's Vars.Local +dict forward when both blocks share the same +MacroFrame id. Mirrors +VolatileVariableReadingSyntax for the +#100-#499 range, with two differences:

    +
    • Carry is gated by MacroFrame equality, so a +caller block after a G65 return does not inherit the macro body's +final locals.
    • Writes outside a macro frame (a main-program block doing +#11 = 5) emit +LocalVariable--MainFrameWriteUnsupported and consume the +assignment without persisting — real Fanuc allows main-frame local +writes but this simulator only tracks locals inside G65/G66 call +frames; surfacing the gap as a diagnostic is more informative than +a silent +UnconsumedCheckSyntax hit.
    +

    +Pipeline placement: Evaluation bundle, after +VariableEvaluatorSyntax (so any expression RHS such as +#11 = #1 + 1 has already been normalised to a literal by the +time this reader runs) and after the other range readers +(RetainedCommonVariableReadingSyntax, +VolatileVariableReadingSyntax) so they all share a +similar Reader-stage shape. +

    +

    +Only literal numeric RHS values are consumed here; non-literal +entries (which can only persist if +VariableEvaluatorSyntax failed to resolve them) are +left untouched and surface via the evaluator's own +VariableExpression--Unevaluated diagnostic plus +UnconsumedCheckSyntax. +

    +
    +
    +
    +
    FanucMacroArgumentMap
    +

    Fanuc Custom Macro B Type-I argument-letter map: which call-line letter +binds to which Vars.Local id (#1-#26) inside the macro body. +Reserved letters (G, L, N, O, P) are +absent — they are consumed by the call itself, not passed through.

    +

    +Used by FanucMacroCallSyntax (G65, one-shot) and +FanucModalMacroSyntax (G66, modal) to translate the +argument letters captured by G65Syntax +/ G66Syntax into the +#nnn bindings the macro body's expression evaluator can read. +

    +
    +
    +
    +
    FanucMacroCallSyntax
    +

    Inlines a Fanuc Custom Macro B one-shot call (G65 P_ L_ [letter +value …]) into the source layer and binds the call-line argument +letters to Vars.Local #1-#26 per the Type-I map (see +FanucMacroArgumentMap). Every inlined block carries the +binding dict, a clone of the FanucMacroCall diagnostic +record, and a MacroFrame id stamp — so +LocalVariableLookup resolves arg references in a +single-block lookup, a cache dump landing on any block immediately +shows which call it belongs to, and downstream +FanucLocalVariableReadingSyntax carries body-internal +#1-#33 writes forward only within the same frame. The host +block itself records FanucMacroCall but stays in the +caller's frame (no MacroFrame stamp) and emits no +motion act; after the macro body's last inlined block the pipeline +continues naturally into the caller's next block (the inlined pieces +sit ahead of the host block's successor in layers[0]).

    +

    +Frame isolation works on two layers. Statically, caller blocks +have no MacroFrame stamp (frame id 0 by +Get(JsonObject)), so the inlined frame ids (allocated +fresh per L-repetition) never collide with main. Dynamically, +LocalVariableLookup and +FanucLocalVariableReadingSyntax compare frame ids +before carrying any Vars.Local entry across a block boundary +— a macro body's body-internal writes therefore stay inside the +macro and never leak back into the caller's frame. +

    +

    +Filename lookup mirrors SubProgramCallSyntax: +O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, +{P:D4}.NC, {P}.NC — first match wins. The lookup root +is InternalFolder (G65 has no +"external storage" variant; M198's external root is M98/M198-only). +

    +

    +L > 1 inlines the same macro L times in series. Each +repetition is a fresh segmentation pass (so each block gets its own +SyntaxPiece JSON object — the downstream pipeline +mutates JSON in place and would clobber sibling repetitions if +instances were shared) and gets a fresh FileIndex (so +(FileIndex, LineIndex) pairs stay unique across the +L-copies of the same source lines). +

    +

    +Pipeline placement: ahead of SubProgramCallSyntax inside +the Fanuc Evaluation BundleSyntax +so a hypothetical G65 P_ + M98 P_ on the same block +expands the G65 macro first (would be an unusual but legal +composition). Detection is on the Parsing.G65 sub-object +written by G65Syntax +(a ParameterizedFlagSyntax) — the +keyword "G65" never reaches Parsing.Flags because the +parameterized match has already consumed the text by the time +NumberedFlagSyntax runs. +

    +
    +
    +
    +
    FanucModalMacroSyntax
    +

    Handles Fanuc Custom Macro B modal-call lifecycle (G66 setup, +G67 cancel, and per-motion-block implicit macro invocation). +The same class is registered twice in the pipeline via +Phase — once in the Evaluation bundle +(Setup, captures G66/G67 edges and carries +the FanucModalMacro state block-to-block) and once in +the PostLogic bundle (Expansion, on every +motion block within an active G66 modal, inlines the macro body via +the same mechanism FanucMacroCallSyntax uses).

    +

    +Keeping both phases in one class makes the pairing visually explicit: +readers see "G66 in one file" and the two methods (DoSetup, +DoExpansion) make the lifecycle obvious. The two factory +helpers (Setup, Expansion) mirror the +ModalCarrySyntax.Logic / .PostLogic pattern already in +the codebase. +

    +
    +
    +
    +
    FanucSystemControlVariableSyntax
    +

    Consumes Fanuc-style system-control variable assignments +(#3000-#3999) — alarm trigger (#3000), millisecond and +hour clocks (#3001 / #3002), single-block / feed-hold +bypass flags (#3003 / #3004), pause-with-message +(#3006), mirror-image flags (#3007), date / time +(#3011 / #3012), tool-life data (#3030 / +#3032), etc.

    +

    +Every id in this range is a controller-side state variable — its +authoritative value lives on the real hardware (RTC, alarm bus, +override switches, …) and an NC write at most triggers a side effect +(clock reset, alarm raise, message-pause prompt). Offline simulation +has none of that machinery, so this syntax does not emulate the +effect. Instead it: +

    +
    1. records the literal write on the block JSON under +Vars.SystemControl (round-trip and cache-dump visibility);
    2. emits a FanucSystemControl--Unsupported +UnsupportedMessage(ISentenceCarrier, string, string, object) +so the user knows the assignment was recognised but its controller-side +effect is not simulated. Message-severity (not Warning) because these +writes are safe no-ops offline — every consumed assignment would emit +a Warning per block, which would be noisy without signalling anything +the user must act on;
    3. removes the entry from Parsing.Assignments so it does not +re-surface as a generic Parsing--Unconsumed diagnostic.
    +

    +The dictionary carries forward block-by-block (same dict-merge pattern +as VolatileVariableReadingSyntax) so a downstream consumer +can read the most recent recorded value via SyntaxPiece linkage. +

    +

    +Only literal numeric RHS values are consumed; non-literal RHS +(e.g. #3002 = #500) is left in Parsing.Assignments for +VariableEvaluatorSyntax to resolve, mirroring the +retained / volatile reading syntaxes. +

    +

    +Fanuc-family only — Siemens uses named system variables +($AC_TIME, $A_DAY, …) and Heidenhain uses +FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn. +

    +
    +
    +

    +Enums +

    +
    +
    FanucModalMacroSyntax.SyntaxPhase
    +

    Identifies which pipeline phase the instance runs in. The two +values correspond to the Evaluation-bundle and PostLogic-bundle +registrations of this same syntax class.

    +
    +
    + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html new file mode 100644 index 00000000..d161c8f1 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html @@ -0,0 +1,277 @@ + + + + + Class LabelScanUtil | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class LabelScanUtil +

    + +
    +
    Namespace
    Hi.NcParsers.EvaluationSyntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Shared “re-segment a file and skip pieces until a label matches” +scan, used by both +FanucGotoSyntax (unconditional GOTO redirect) +and SubProgramReturnSyntax (M99 P{seq} jump +into the caller file). Reads the file via +ReadLines(int, string, string), segments through the +provided ISegmenter, runs the +probeSyntaxes on each candidate block to +extract IndexNote.Number, and returns the slice from the +first matching block to EOF.

    +

    +Returns null when no block matches — the caller's +responsibility to surface the appropriate diagnostic. The probes +are idempotent because the downstream Parsing bundle re-runs the +same syntaxes on the yielded pieces with no-op effect (the regex +patterns no longer match once the N-prefix is consumed and the +parenthesised comment stripped). +

    +
    +
    + +
    +
    public static class LabelScanUtil
    +
    + + + + +
    +
    Inheritance
    +
    + +
    LabelScanUtil
    +
    +
    + + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + + + + + + +

    Methods +

    + + + + +

    + SegmentAndSkipUntilLabel(ISegmenter, string, string, int, int, int, List<ISituNcSyntax>, NcDiagnosticProgress) + +

    + +

    Re-segments absPath from offset 0, scans for +a block whose Number equals +targetN (after the +probeSyntaxes have stamped it in-place), and +returns the sub-list of pieces from that block to EOF. +Pieces are produced via +GetSyntaxPieces(ISegmenter, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) with +SentenceIndex stamped starting at +sentenceIndexBegin. Returns null when +no match is found; the caller emits its own brand-specific +“label not found” diagnostic.

    +

    +The predicate is fixed at the +IndexNote.Number section +— the section name comes from nameof() so a future rename +propagates without re-edits. Reconfigurability for non-standard +label-output sections is achieved by replacing the probe syntaxes +(the natural extension point) rather than parameterising the +predicate path here: a probe stack that doesn't end up writing +IndexNote on candidates is by definition not +participating in this scan. +

    +
    +
    + +
    +
    public static List<SyntaxPiece> SegmentAndSkipUntilLabel(ISegmenter segmenter, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, int targetN, List<ISituNcSyntax> probeSyntaxes, NcDiagnosticProgress diag)
    +
    + +

    Parameters

    +
    +
    segmenter ISegmenter
    +

    Segmenter used to slice the file into Sentence blocks.

    +
    +
    absPath string
    +

    Absolute path to read line content from.

    +
    +
    labelPath string
    +

    Project-relative path to stamp on each line's IndexedFileLine label (so diagnostics anchor to a relative form, not the resolver's transient absolute path).

    +
    +
    fileIndex int
    +

    Fresh file index to stamp on each scanned line, allocated by the caller from FileIndexCounterDependency.

    +
    +
    sentenceIndexBegin int
    +

    Starting execution-order index for the produced pieces.

    +
    +
    targetN int
    +

    Integer label target to match against Number.

    +
    +
    probeSyntaxes List<ISituNcSyntax>
    +

    Ordered list of helper syntaxes to run on each candidate block before the predicate check (typically comment-stripper(s) followed by a head-index parser). May be null.

    +
    +
    diag NcDiagnosticProgress
    +

    Sink for any diagnostics produced by the probe syntaxes (e.g. comment-stripper malformed-comment warnings).

    +
    +
    + +

    Returns

    +
    +
    List<SyntaxPiece>
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html new file mode 100644 index 00000000..6ce6a135 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html @@ -0,0 +1,345 @@ + + + + + Struct MacroFileResolver.ResolvedFile | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Struct MacroFileResolver.ResolvedFile +

    + +
    +
    Namespace
    Hi.NcParsers.EvaluationSyntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Tri-form resolution result. FileName is the bare +matched name; RelPath is that name joined with the +folder portion of the dependency (relative when the folder is +configured relative, absolute fallback when it isn't); +AbsPath is the fully-resolved I/O target.

    +
    +
    + +
    +
    public readonly record struct MacroFileResolver.ResolvedFile : IEquatable<MacroFileResolver.ResolvedFile>
    +
    + + + + + +
    +
    Implements
    +
    + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + ResolvedFile(string, string, string) + +

    + +

    Tri-form resolution result. FileName is the bare +matched name; RelPath is that name joined with the +folder portion of the dependency (relative when the folder is +configured relative, absolute fallback when it isn't); +AbsPath is the fully-resolved I/O target.

    +
    +
    + +
    +
    public ResolvedFile(string FileName, string RelPath, string AbsPath)
    +
    + +

    Parameters

    +
    +
    FileName string
    +
    +
    RelPath string
    +
    +
    AbsPath string
    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + AbsPath + +

    + +
    +
    + +
    +
    public string AbsPath { get; init; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + FileName + +

    + +
    +
    + +
    +
    public string FileName { get; init; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + RelPath + +

    + +
    +
    + +
    +
    public string RelPath { get; init; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html new file mode 100644 index 00000000..0598cf30 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html @@ -0,0 +1,338 @@ + + + + + Class MacroFileResolver | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class MacroFileResolver +

    + +
    +
    Namespace
    Hi.NcParsers.EvaluationSyntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Shared subprogram-/macro-file resolver for Fanuc-style O<n> +lookups consumed by SubProgramCallSyntax (M98 / M198) +and FanucMacroCallSyntax (G65). Single helper so the three +path forms — file name, project-relative path, absolute path — are +produced together at one site and each caller gets exactly the form +it should consume:

    +
    • FileName — bare O####.NC form +the resolver matched. Stored in JSON sections (FanucMacroCall, +SubProgramCall) as the structural NC-language identifier; +independent of which folder the dependency happened to be pointing +at, so the JSON stays portable across environments.
    • RelPath — relative path against the +project base directory (e.g. "NC/O1234.NC"). Used as the +IndexedFileLine label so diagnostics on inlined blocks +align with the relative form already used for the main file label.
    • AbsPath — absolute path. Used only +at the ReadLines(int, string, string) call site for actual disk I/O; never +persisted, never returned to JSON. Lives inside the resolver's stack +frame and the segmenter's enumeration.
    +

    +Filename lookup order (first match wins) mirrors real Fanuc fallback: +O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, +{P:D4}.NC, {P}.NC. Case-insensitive match is delegated +to the host filesystem (Windows is, Linux is not). +

    +
    +
    + +
    +
    public static class MacroFileResolver
    +
    + + + + +
    +
    Inheritance
    +
    + +
    MacroFileResolver
    +
    +
    + + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + + + + + + +

    Fields +

    + + + +

    + FilenamePatterns + +

    + +

    Filename-resolution fallback chain. Patterns are formatted with +the P parameter as the only positional arg.

    +
    +
    + +
    +
    public static readonly string[] FilenamePatterns
    +
    + + + + +

    Field Value

    +
    +
    string[]
    +
    +
    + + + + + + + + + +

    Methods +

    + + + + +

    + ReadLines(int, string, string) + +

    + +

    Streams IndexedFileLine entries from absPath +but stamps each entry's FilePath with the project-relative +labelPath. Mirrors the manual loop in +GetIndexedFileLines(string, IEnumerable<string>, int, NcDiagnosticProgress, CancellationToken) for the main file +so inlined macros stay consistent with the rest of the pipeline +(diagnostics anchored to a relative label, not the resolver's +transient absolute path).

    +
    +
    + +
    +
    public static IEnumerable<IndexedFileLine> ReadLines(int fileIndex, string absPath, string labelPath)
    +
    + +

    Parameters

    +
    +
    fileIndex int
    +
    +
    absPath string
    +
    +
    labelPath string
    +
    +
    + +

    Returns

    +
    +
    IEnumerable<IndexedFileLine>
    +
    +
    + + + + + + + + + + + + + +

    + Resolve(string, int, string) + +

    + +

    Resolves an O<p> file against the given folder, returning +all three path forms. Returns null when the folder cannot +be anchored (relative folder but no baseDirectory), +the resolved folder does not exist, or no filename pattern matched.

    +

    +folder may be absolute (used as-is) or relative +(combined with baseDirectory). Empty / null +folder means "look directly in +baseDirectory". When the folder is absolute, +RelPath falls back to absolute too — +there's no natural relative form when the user explicitly +configured an out-of-project folder. +

    +
    +
    + +
    +
    public static MacroFileResolver.ResolvedFile? Resolve(string folder, int p, string baseDirectory)
    +
    + +

    Parameters

    +
    +
    folder string
    +
    +
    p int
    +
    +
    baseDirectory string
    +
    +
    + +

    Returns

    +
    +
    MacroFileResolver.ResolvedFile?
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html new file mode 100644 index 00000000..be1e054b --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html @@ -0,0 +1,338 @@ + + + + + Class MacroInlineUtil | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class MacroInlineUtil +

    + +
    +
    Namespace
    Hi.NcParsers.EvaluationSyntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Shared inline mechanism for Fanuc Custom Macro B body expansion — +used by both FanucMacroCallSyntax (one-shot) and +FanucModalMacroSyntax's expansion phase (modal trigger). Both +callers do the same three things on every produced +SyntaxPiece: stamp a FanucMacroCall +clone, stamp a fresh MacroFrame id, and stamp +argument bindings into Vars.Local. Centralising lets the two +call sites stay in lock-step — frame allocation, file-index +allocation, and the inline-piece JSON shape are guaranteed +identical.

    +

    +Frame ids share the same FileIndexCounterDependency +counter as file indices — both just need within-session uniqueness +and the counter is rewound on session start in lock-step with the +pipeline. The main NC file is allocated index 0 first, so all +inline frame ids land at > 0 and never collide with main. +

    +
    +
    + +
    +
    public static class MacroInlineUtil
    +
    + + + + +
    +
    Inheritance
    +
    + +
    MacroInlineUtil
    +
    +
    + + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + + + + + + +

    Methods +

    + + + + +

    + ApplyLocalBindings(JsonObject, IReadOnlyDictionary<string, double>) + +

    + +

    Writes the resolved #N → value bindings into +Vars.Local on the given block. No-op when +bindings is empty. Always overwrites any +pre-existing Vars.Local on the block — for inlined macro +bodies this is a fresh stamp.

    +
    +
    + +
    +
    public static void ApplyLocalBindings(JsonObject json, IReadOnlyDictionary<string, double> bindings)
    +
    + +

    Parameters

    +
    +
    json JsonObject
    +
    +
    bindings IReadOnlyDictionary<string, double>
    +
    +
    + + + + + + + + + + + + + + +

    + BuildInlinedPieces(ResolvedFile, int, IReadOnlyDictionary<string, double>, JsonObject, JsonObject, FileIndexCounterDependency, ISegmenter, int, NcDiagnosticProgress) + +

    + +

    Yields L repetitions of the macro body as inline-ready +SyntaxPiece entries. Each repetition gets its own +freshly-allocated FileIndex and MacroFrame +id; every yielded piece is stamped with a deep clone of +callRecord, the frame id, and the resolved +#N → value bindings. The caller passes +the result to LazyLinkedList<T>.PrependSource on +the source layer.

    +
    +
    + +
    +
    public static IEnumerable<SyntaxPiece> BuildInlinedPieces(MacroFileResolver.ResolvedFile resolvedFile, int l, IReadOnlyDictionary<string, double> bindings, JsonObject callRecord, JsonObject pushedCallStack, FileIndexCounterDependency counterDep, ISegmenter segmenter, int sentenceIndexBegin, NcDiagnosticProgress ncDiagnosticProgress)
    +
    + +

    Parameters

    +
    +
    resolvedFile MacroFileResolver.ResolvedFile
    +
    +
    l int
    +
    +
    bindings IReadOnlyDictionary<string, double>
    +
    +
    callRecord JsonObject
    +
    +
    pushedCallStack JsonObject
    +
    +
    counterDep FileIndexCounterDependency
    +
    +
    segmenter ISegmenter
    +
    +
    sentenceIndexBegin int
    +
    +
    ncDiagnosticProgress NcDiagnosticProgress
    +
    +
    + +

    Returns

    +
    +
    IEnumerable<SyntaxPiece>
    +
    +
    + + + + + + + + + + + + + +

    + BuildLocalBindings(JsonObject) + +

    + +

    Translates the argument-letter map captured by the host call +({ “A”: 1.5, “B”: 2.0, ... }) into the #N → value +bindings the macro body's expression evaluator will read off +Vars.Local. Skips non-numeric (string) args silently — +those are unresolved variable references that the evaluator's +own VariableExpression–Unevaluated diagnostic will +surface; writing a string into Vars.Local would just +propagate the residue.

    +
    +
    + +
    +
    public static Dictionary<string, double> BuildLocalBindings(JsonObject args)
    +
    + +

    Parameters

    +
    +
    args JsonObject
    +
    +
    + +

    Returns

    +
    +
    Dictionary<string, double>
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html index bab1eea6..7c5ce0a1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html @@ -308,7 +308,7 @@ runner's NcDependencyList, this syntax is a no-op. -

    XML element name for Regs registration.

    +

    XML element name for Generators registration.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html index c9f699d0..abd78bda 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html @@ -6,7 +6,7 @@ - + @@ -136,8 +136,12 @@ repetitions if instances were shared.

    Not yet supported: M99 P{seq} early return inside a -subprogram, partial-program calls (M98 P{seq}{prog} split -encoding), and arg binding (G65 macro is a separate syntax). +subprogram and partial-program calls (M98 P{seq}{prog} split +encoding). Custom Macro B argument-binding calls (G65 / +G66 / G67) live in FanucMacroCallSyntax and +FanucModalMacroSyntax — those handle the +argument-letter-to-#1..#26 binding and the macro-call frame +isolation that M98 deliberately does not provide.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html index 2d608faf..68ed1482 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,31 +97,42 @@ Class SubProgramReturnSyntax
    Assembly
    HiMech.dll
    -

    Consumes Fanuc-style M99 subprogram-return blocks.

    +

    Consumes Fanuc-style M99 subprogram-return blocks and pops +one CallStack frame. Plain M99 relies on the +natural pipeline tail — the inlined body's last block is followed +in layers[0] by the caller's next block, so the “return” +happens implicitly; this syntax only consumes the M99 trigger (so +UnconsumedCheckSyntax doesn't warn), +stamps a SubProgramReturn diagnostic section, and +writes the popped CallStack for downstream blocks to +carry.

    -In the inline model used by SubProgramCallSyntax, a -plain M99 at the end of a subprogram is implicit: the -inlined blocks are followed in layers[0] by the caller's -next block, so the natural pipeline traversal already does the -"return". This syntax therefore only consumes the M99 flag (so -UnconsumedCheckSyntax doesn't warn) -and records a SubProgramReturn section for cache-dump -visibility. +M99 P{seq} additionally redirects control flow to the +caller's N{seq} block via +ReplaceSource(IEnumerable<T>). The caller's file is +resolved from the popped frame's +CallerFilePath; the scan uses the same +SegmentAndSkipUntilLabel(ISegmenter, string, string, int, int, int, List<ISituNcSyntax>, NcDiagnosticProgress) helper as +FanucGotoSyntax, with hardcoded Fanuc-default +probes (QuoteCommentSyntax + HeadIndexSyntax +with symbol "N") because the M99 P semantic itself is +Fanuc-family-only and Mazak / Syntec follow the same conventions. +The iteration is counted against +FanucGotoIterationDependency, sharing the same +runaway-loop guard as GOTO — keyed on the same +(FileName, TargetN) bucket so a tight +M98 → M99 P → M98 … loop trips the same threshold.

    -M99 P{seq} (return to caller's N{seq} sequence -number) is captured in P but not yet -honoured — the subprogram tail still proceeds straight into the -caller's next block. Implementing the jump requires a forward scan -of the post-host caller blocks for a matching N{seq} head -index, then dropping the intervening blocks; deferred until the -caller-side walk semantics are designed. -

    -

    -Pipeline placement: anywhere after Parsing has populated -Parsing.M99. Conventionally placed alongside -SubProgramCallSyntax at the head of the Evaluation -bundle so call/return live next to each other. +Pipeline placement: same Evaluation bundle slot it always occupied, +right after SubProgramCallSyntax at the head. Needs +FanucGotoIterationDependency, +ProjectFolderDependency, +SegmenterDependency, +SyntaxPieceLayerDependency, +FileIndexCounterDependency on the dep list when +M99 P{seq} is to fire; without them the plain-M99 path still +works and the P-jump emits a configuration warning.

    Detection is on the Parsing.M99 sub-object written by @@ -226,7 +237,7 @@ parameterized match has already consumed the text by the time -

    Parameterless instance for bundle composition (no XML state).

    +

    Parameterless instance with default probe list.

    @@ -248,23 +259,31 @@ parameterized match has already consumed the text by the time -

    - SubProgramReturnSyntax(XElement) +

    + SubProgramReturnSyntax(XElement, string, IProgress<object>)

    -

    XML ctor (no child elements; reserved for forward compatibility).

    +

    Loads LabelProbeSyntaxes from XML produced by +MakeXmlSource(string, string, bool). An absent wrapper falls back to the +default probe list.

    -
    public SubProgramReturnSyntax(XElement src)
    +
    public SubProgramReturnSyntax(XElement src, string baseDirectory, IProgress<object> progress)

    Parameters

    src XElement

    Root element named XName.

    +
    +
    baseDirectory string
    +

    Project base directory propagated to child XFactory calls.

    +
    +
    progress IProgress<object>
    +

    Diagnostic sink propagated to child factories.

    @@ -283,6 +302,46 @@ parameterized match has already consumed the text by the time + + +

    + LabelProbeSyntaxes + +

    + +

    Ordered list of probe syntaxes run on each candidate block during +the M99 P{seq} caller-side scan, before the integer label predicate +fires. Defaults match Fanuc / Mazak / Syntec (parenthesised comment +stripper + N head-index parser); API customers can swap or +extend (e.g. add a TailCommentSyntax for ; +end-of-block comments, or insert a BlockSkipSyntax +to exclude /-prefixed candidates) without subclassing. +Mirrors the same hosted-list pattern as +LabelProbeSyntaxes.

    +
    +
    + +
    +
    public List<ISituNcSyntax> LabelProbeSyntaxes { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<ISituNcSyntax>
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html index 45a782a3..15fc6c2e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html @@ -104,7 +104,7 @@ appears — but does not write to any specific store. Routing “where the resolved literal lands” stays in the brand-specific reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableTable's reader, -FanucSystemControlVariableSyntax, …) which run +FanucSystemControlVariableSyntax, …) which run after this syntax on the same block.

    Two passes per block: @@ -123,7 +123,7 @@ from Parsing.<tag> (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric JsonValue. Failures silently leave the original string and rely on downstream -GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface +GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read.

@@ -285,7 +285,7 @@ CAM-emitted NC (one assignment per line). -

Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.

+

Loads from an XML element produced by MakeXmlSource(string, string, bool); restores RuntimeVariableLookups via XFactory dispatch.

@@ -357,8 +357,9 @@ CAM-emitted NC (one assignment per line). Vars.Local / Vars.Volatile, position reads, runtime-state reads). Walked in list order, before the dependency-bound IVariableLookups. Brand presets -configure this — instances are not XML-serialised because they -are brand-determined behaviour, not project state.

+configure this; the list is XML-serialised so a runner rebuilt from +XML keeps its brand-specific lookups (each impl is stateless and +dispatches by its XName via XFactory).

@@ -390,7 +391,7 @@ are brand-determined behaviour, not project state.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html index 1a6efc8c..83031f72 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html @@ -373,7 +373,7 @@ or after this syntax. -

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html index 5fd826a2..6423a845 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html @@ -95,46 +95,89 @@ Classes
-
FanucSystemControlVariableSyntax
-

Consumes Fanuc-style system-control variable assignments -(#3000-#3999) — alarm trigger (#3000), millisecond and -hour clocks (#3001 / #3002), single-block / feed-hold -bypass flags (#3003 / #3004), pause-with-message -(#3006), mirror-image flags (#3007), date / time -(#3011 / #3012), tool-life data (#3030 / -#3032), etc.

+
CallStackUtil
+

Push / pop helpers for the per-block CallStack section. +Both produce a fresh deep-cloned JsonObject ready to +stamp onto an inlined piece (push site) or onto an M99 return block +(pop site); the caller is responsible for deep-cloning again if it +distributes the same stamp across multiple pieces of an L-repetition.

-Every id in this range is a controller-side state variable — its -authoritative value lives on the real hardware (RTC, alarm bus, -override switches, …) and an NC write at most triggers a side effect -(clock reset, alarm raise, message-pause prompt). Offline simulation -has none of that machinery, so this syntax does not emulate the -effect. Instead it: +Pairs with ModalCarrySyntax at the +Logic stage: explicit push / pop writes seed the section at frame +boundaries, ModalCarry copies it forward to every block in between +so each block is self-contained for cache-dump readers and downstream +consumers (notably M99 P{seq} reading the top frame's +CallerFilePath).

-
  1. records the literal write on the block JSON under -Vars.SystemControl (round-trip and cache-dump visibility);
  2. emits a FanucSystemControl--Unsupported -UnsupportedMessage(Sentence, string, string, object) -so the user knows the assignment was recognised but its controller-side -effect is not simulated. Message-severity (not Warning) because these -writes are safe no-ops offline — every consumed assignment would emit -a Warning per block, which would be noisy without signalling anything -the user must act on;
  3. removes the entry from Parsing.Assignments so it does not -re-surface as a generic Parsing--Unconsumed diagnostic.
+
+
+
+
LabelScanUtil
+

Shared “re-segment a file and skip pieces until a label matches” +scan, used by both +FanucGotoSyntax (unconditional GOTO redirect) +and SubProgramReturnSyntax (M99 P{seq} jump +into the caller file). Reads the file via +ReadLines(int, string, string), segments through the +provided ISegmenter, runs the +probeSyntaxes on each candidate block to +extract IndexNote.Number, and returns the slice from the +first matching block to EOF.

-The dictionary carries forward block-by-block (same dict-merge pattern -as VolatileVariableReadingSyntax) so a downstream consumer -can read the most recent recorded value via SyntaxPiece linkage. +Returns null when no block matches — the caller's +responsibility to surface the appropriate diagnostic. The probes +are idempotent because the downstream Parsing bundle re-runs the +same syntaxes on the yielded pieces with no-op effect (the regex +patterns no longer match once the N-prefix is consumed and the +parenthesised comment stripped).

+
+
+
+
MacroFileResolver
+

Shared subprogram-/macro-file resolver for Fanuc-style O<n> +lookups consumed by SubProgramCallSyntax (M98 / M198) +and FanucMacroCallSyntax (G65). Single helper so the three +path forms — file name, project-relative path, absolute path — are +produced together at one site and each caller gets exactly the form +it should consume:

+
  • FileName — bare O####.NC form +the resolver matched. Stored in JSON sections (FanucMacroCall, +SubProgramCall) as the structural NC-language identifier; +independent of which folder the dependency happened to be pointing +at, so the JSON stays portable across environments.
  • RelPath — relative path against the +project base directory (e.g. "NC/O1234.NC"). Used as the +IndexedFileLine label so diagnostics on inlined blocks +align with the relative form already used for the main file label.
  • AbsPath — absolute path. Used only +at the ReadLines(int, string, string) call site for actual disk I/O; never +persisted, never returned to JSON. Lives inside the resolver's stack +frame and the segmenter's enumeration.

-Only literal numeric RHS values are consumed; non-literal RHS -(e.g. #3002 = #500) is left in Parsing.Assignments for -VariableEvaluatorSyntax to resolve, mirroring the -retained / volatile reading syntaxes. +Filename lookup order (first match wins) mirrors real Fanuc fallback: +O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, +{P:D4}.NC, {P}.NC. Case-insensitive match is delegated +to the host filesystem (Windows is, Linux is not).

+
+
+
+
MacroInlineUtil
+

Shared inline mechanism for Fanuc Custom Macro B body expansion — +used by both FanucMacroCallSyntax (one-shot) and +FanucModalMacroSyntax's expansion phase (modal trigger). Both +callers do the same three things on every produced +SyntaxPiece: stamp a FanucMacroCall +clone, stamp a fresh MacroFrame id, and stamp +argument bindings into Vars.Local. Centralising lets the two +call sites stay in lock-step — frame allocation, file-index +allocation, and the inline-piece JSON shape are guaranteed +identical.

-Fanuc-family only — Siemens uses named system variables -($AC_TIME, $A_DAY, …) and Heidenhain uses -FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn. +Frame ids share the same FileIndexCounterDependency +counter as file indices — both just need within-session uniqueness +and the counter is rewound on session start in lock-step with the +pipeline. The main NC file is allocated index 0 first, so all +inline frame ids land at > 0 and never collide with main.

@@ -204,38 +247,53 @@ repetitions if instances were shared.

Not yet supported: M99 P{seq} early return inside a -subprogram, partial-program calls (M98 P{seq}{prog} split -encoding), and arg binding (G65 macro is a separate syntax). +subprogram and partial-program calls (M98 P{seq}{prog} split +encoding). Custom Macro B argument-binding calls (G65 / +G66 / G67) live in FanucMacroCallSyntax and +FanucModalMacroSyntax — those handle the +argument-letter-to-#1..#26 binding and the macro-call frame +isolation that M98 deliberately does not provide.

SubProgramReturnSyntax
-

Consumes Fanuc-style M99 subprogram-return blocks.

+

Consumes Fanuc-style M99 subprogram-return blocks and pops +one CallStack frame. Plain M99 relies on the +natural pipeline tail — the inlined body's last block is followed +in layers[0] by the caller's next block, so the “return” +happens implicitly; this syntax only consumes the M99 trigger (so +UnconsumedCheckSyntax doesn't warn), +stamps a SubProgramReturn diagnostic section, and +writes the popped CallStack for downstream blocks to +carry.

-In the inline model used by SubProgramCallSyntax, a -plain M99 at the end of a subprogram is implicit: the -inlined blocks are followed in layers[0] by the caller's -next block, so the natural pipeline traversal already does the -"return". This syntax therefore only consumes the M99 flag (so -UnconsumedCheckSyntax doesn't warn) -and records a SubProgramReturn section for cache-dump -visibility. +M99 P{seq} additionally redirects control flow to the +caller's N{seq} block via +ReplaceSource(IEnumerable<T>). The caller's file is +resolved from the popped frame's +CallerFilePath; the scan uses the same +SegmentAndSkipUntilLabel(ISegmenter, string, string, int, int, int, List<ISituNcSyntax>, NcDiagnosticProgress) helper as +FanucGotoSyntax, with hardcoded Fanuc-default +probes (QuoteCommentSyntax + HeadIndexSyntax +with symbol "N") because the M99 P semantic itself is +Fanuc-family-only and Mazak / Syntec follow the same conventions. +The iteration is counted against +FanucGotoIterationDependency, sharing the same +runaway-loop guard as GOTO — keyed on the same +(FileName, TargetN) bucket so a tight +M98 → M99 P → M98 … loop trips the same threshold.

-M99 P{seq} (return to caller's N{seq} sequence -number) is captured in P but not yet -honoured — the subprogram tail still proceeds straight into the -caller's next block. Implementing the jump requires a forward scan -of the post-host caller blocks for a matching N{seq} head -index, then dropping the intervening blocks; deferred until the -caller-side walk semantics are designed. -

-

-Pipeline placement: anywhere after Parsing has populated -Parsing.M99. Conventionally placed alongside -SubProgramCallSyntax at the head of the Evaluation -bundle so call/return live next to each other. +Pipeline placement: same Evaluation bundle slot it always occupied, +right after SubProgramCallSyntax at the head. Needs +FanucGotoIterationDependency, +ProjectFolderDependency, +SegmenterDependency, +SyntaxPieceLayerDependency, +FileIndexCounterDependency on the dep list when +M99 P{seq} is to fire; without them the plain-M99 path still +works and the P-jump emits a configuration warning.

Detection is on the Parsing.M99 sub-object written by @@ -256,7 +314,7 @@ appears — but does not write to any specific store. Routing “where the resolved literal lands” stays in the brand-specific reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableTable's reader, -FanucSystemControlVariableSyntax, …) which run +FanucSystemControlVariableSyntax, …) which run after this syntax on the same block.

Two passes per block: @@ -275,7 +333,7 @@ from Parsing.<tag> (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric JsonValue. Failures silently leave the original string and rely on downstream -GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface +GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read.

@@ -339,6 +397,18 @@ The two syntaxes are decoupled — the evaluator's lookup tracebacks via SyntaxPiece linkage so it does not depend on having run before or after this syntax.

+
+
+

+Structs +

+
+
MacroFileResolver.ResolvedFile
+

Tri-form resolution result. FileName is the bare +matched name; RelPath is that name joined with the +folder portion of the dependency (relative when the folder is +configured relative, absolute fallback when it isn't); +AbsPath is the fully-resolved I/O target.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceCarrier.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceCarrier.html new file mode 100644 index 00000000..cddd235f --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceCarrier.html @@ -0,0 +1,185 @@ + + + + + Interface ISentenceCarrier | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface ISentenceCarrier +

+ +
+
Namespace
Hi.NcParsers
+
Assembly
HiMech.dll
+
+ +

Carries a reference to a source Sentence together with its +execution-order SentenceIndex. Used as the +cross-process alignment carrier for diagnostics, messages, ClStripPos, +MachiningStep, etc. — both the source content (via +GetSentence()) and the execution-order position +(via SentenceIndex) are available without +needing two separate references.

+
+
+ +
+
public interface ISentenceCarrier : IGetSentence, ISentenceIndexed
+
+ + + + + + + +
+
Inherited Members
+
+ + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceIndexed.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceIndexed.html new file mode 100644 index 00000000..e17dbe54 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceIndexed.html @@ -0,0 +1,211 @@ + + + + + Interface ISentenceIndexed | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface ISentenceIndexed +

+ +
+
Namespace
Hi.NcParsers
+
Assembly
HiMech.dll
+
+ +

Abstraction for an object that carries a SentenceIndex — +a 0-based ordinal of its source Sentence in NC execution +order. Use as a cross-process alignment key (messages, ClStripPos, +MachiningStep, etc.) when source order +(MixedIndex(IFileLineIndex)) +is not enough because SubProgram inline reorders blocks relative to +(FileIndex, LineIndex).

+
+
+ +
+
public interface ISentenceIndexed
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ SentenceIndex + +

+ +

0-based ordinal in pipeline execution order.

+
+
+ +
+
int SentenceIndex { get; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.IndexedSentence.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.IndexedSentence.html new file mode 100644 index 00000000..5d1d60fc --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.IndexedSentence.html @@ -0,0 +1,362 @@ + + + + + Class IndexedSentence | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class IndexedSentence +

+ +
+
Namespace
Hi.NcParsers
+
Assembly
HiMech.dll
+
+ +

Minimal ISentenceCarrier pairing a Sentence +with its execution-order SentenceIndex. Use when there is no +richer host object that already carries the sentence — e.g. CSV-driven +runs that go straight from an input line to a Sentence +without a SyntaxPiece wrapper.

+
+
+ +
+
public record IndexedSentence : ISentenceCarrier, IGetSentence, ISentenceIndexed, IEquatable<IndexedSentence>
+
+ + + + +
+
Inheritance
+
+ +
IndexedSentence
+
+
+ +
+
Implements
+
+ + + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ IndexedSentence(Sentence, int) + +

+ +

Minimal ISentenceCarrier pairing a Sentence +with its execution-order SentenceIndex. Use when there is no +richer host object that already carries the sentence — e.g. CSV-driven +runs that go straight from an input line to a Sentence +without a SyntaxPiece wrapper.

+
+
+ +
+
public IndexedSentence(Sentence Sentence, int SentenceIndex)
+
+ +

Parameters

+
+
Sentence Sentence
+

The source sentence carried.

+
+
SentenceIndex int
+

0-based ordinal in pipeline execution order.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Sentence + +

+ +

The source sentence carried.

+
+
+ +
+
public Sentence Sentence { get; init; }
+
+ + + + + +

Property Value

+
+
Sentence
+
+
+ + + + + + + + + + +

+ SentenceIndex + +

+ +

0-based ordinal in pipeline execution order.

+
+
+ +
+
public int SentenceIndex { get; init; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetSentence() + +

+ +

Returns the source Sentence carried by this object.

+
+
+ +
+
public Sentence GetSentence()
+
+ + +

Returns

+
+
Sentence
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html index a9a192e9..ba768722 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html @@ -338,7 +338,7 @@ previously produced by

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html index 5f579cb1..6e8d98c7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html @@ -339,7 +339,7 @@ the value is a modal back-fill to make debug dumps more complete". -

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html index 8fd172a2..d390fc4c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html @@ -458,7 +458,7 @@ skip).

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html index 2efd2fcc..345939d4 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html @@ -325,7 +325,7 @@ Must be placed at the end of

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.CallFrame.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.CallFrame.html new file mode 100644 index 00000000..4630923e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.CallFrame.html @@ -0,0 +1,244 @@ + + + + + Class CallFrame | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class CallFrame +

+ +
+
Namespace
Hi.NcParsers.Keywords
+
Assembly
HiMech.dll
+
+ +

One entry in Frames. Holds the caller-side +information consumers need to “unwind” or “look back” — currently +only the relative file path of the caller, used by +SubProgramReturnSyntax on +M99 P{seq} to locate the caller's N{seq} block.

+
+
+ +
+
public class CallFrame
+
+ + + + +
+
Inheritance
+
+ +
CallFrame
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ CallerFilePath + +

+ +

Project-relative file path of the calling block — same form as +FilePath on the caller side. Used by M99 +P{seq} to re-segment the caller file and skip ahead to +N{seq}.

+
+
+ +
+
public string CallerFilePath { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.CallStack.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.CallStack.html new file mode 100644 index 00000000..ca912614 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.CallStack.html @@ -0,0 +1,255 @@ + + + + + Class CallStack | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class CallStack +

+ +
+
Namespace
Hi.NcParsers.Keywords
+
Assembly
HiMech.dll
+
+ +

JSON-section data shape representing the active call-frame stack on +a block — pushed by call-and-inline syntaxes +(SubProgramCallSyntax for M98/M198, +FanucMacroCallSyntax for G65, and +FanucModalMacroSyntax's expansion +phase for G66 implicit triggers) and popped by +SubProgramReturnSyntax on M99. Every +block between push and pop carries the section forward via +ModalCarrySyntax; the caller's blocks +before push and after pop carry the surrounding stack state +(typically empty when running from the main file).

+

+The section is wrapped in a JsonObject rather than +exposed as a bare JsonArray so it fits ModalCarry's +"deep-clone JsonObject" carry pattern — the array of frames lives +inside Frames. +

+
+
+ +
+
public class CallStack
+
+ + + + +
+
Inheritance
+
+ +
CallStack
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ Frames + +

+ +

Ordered list of active call frames, bottom-of-stack first. Each +entry is a CallFrame-shaped JSON object. Length 0 +means the block is in the main (top-level) frame.

+
+
+ +
+
public JsonArray Frames { get; set; }
+
+ + + + + +

Property Value

+
+
JsonArray
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucGoto.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucGoto.html new file mode 100644 index 00000000..11b90c3a --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucGoto.html @@ -0,0 +1,362 @@ + + + + + Class FanucGoto | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucGoto +

+ +
+
Namespace
Hi.NcParsers.Keywords
+
Assembly
HiMech.dll
+
+ +

Fanuc Custom Macro B GOTO record. Stamped on the host block by +FanucGotoSyntax after the control-flow +decision has been made; produced earlier by +FanucGotoParsingSyntax as a parsing-stage +sub-section (Parsing.FanucGoto) carrying the raw captured fields.

+

+Two source forms map to the same shape: +

  • GOTO <n> — unconditional jump. Condition is null.
  • IF [<bool-expr>] GOTO <n> — conditional jump. + Condition holds the expression text from inside the + brackets.
+ +

+At parsing time N is a raw token from the source — it may +be a literal ("100"), a variable reference ("#1"), or a +bracketed expression ("#[#2+5]"). VariableEvaluatorSyntax +substitutes a resolved literal back into the same field in the +Evaluation bundle; FanucGotoSyntax then +int.TryParses the final string to produce an int target. +

+
+
+ +
+
public class FanucGoto
+
+ + + + +
+
Inheritance
+
+ +
FanucGoto
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ Condition + +

+ +

Raw boolean expression text from inside the IF [...] +brackets, or null for the unconditional form. Evaluator boolean +support is pending — until then, +FanucGotoSyntax emits a warning +and falls through for any non-null Condition.

+
+
+ +
+
public string Condition { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Fired + +

+ +

Whether the GOTO actually redirected control flow on this block. +False on conditional GOTOs whose condition evaluated to false, on +conditional GOTOs whose condition was not evaluable, and on +iteration-limit-exceeded blocks. The host block is preserved in +either case so diagnostic readers can still see the call.

+
+
+ +
+
public bool Fired { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ N + +

+ +

Target sequence-number expression — kept as a string so the +in-place evaluator can substitute "#1"“3” before +the Evaluation stage parses it as an int.

+
+
+ +
+
public string N { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Term + +

+ +

Triggering phrase: “GOTO” for the unconditional form, +“IF...GOTO” for the conditional form.

+
+
+ +
+
public string Term { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucIfThen.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucIfThen.html new file mode 100644 index 00000000..2ffa95bc --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucIfThen.html @@ -0,0 +1,341 @@ + + + + + Class FanucIfThen | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucIfThen +

+ +
+
Namespace
Hi.NcParsers.Keywords
+
Assembly
HiMech.dll
+
+ +

Fanuc Custom Macro B IF [<cond>] THEN <body> +single-block conditional record. Stamped on the host block by +FanucIfThenSyntax after the gate +decision; produced earlier by +FanucIfThenParsingSyntax as a parsing-stage +sub-section (Parsing.FanucIfThen) carrying the raw captured fields +plus an internal PendingAssignments sub-object harvested from the +body text.

+

+Spec: IF [bool-expr] THEN <stmt> executes <stmt> +only when the condition is truthy. Unlike FanucGoto's +conditional form there is no jump — the body affects the current block +only, no source splice, no label scan, no iteration watchdog. The most +common body shape is a single Custom Macro B assignment +(#nnn = <expr>); multiple assignments in one body are also +accepted and lifted together. +

+

+Condition is held as a string at parsing time so +VariableEvaluatorSyntax's pass-2 tree walk can substitute +it to a numeric JsonValue in place; +the FanucIfThenSyntax tail then reads the resolved node polymorphically +via the same ReadCondition shape used by +FanucGotoSyntax. +

+
+
+ +
+
public class FanucIfThen
+
+ + + + +
+
Inheritance
+
+ +
FanucIfThen
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ Applied + +

+ +

Whether the body actually fired on this block. False on conditions +that evaluated to zero, on conditions the evaluator could not +resolve, and on bodies that did not parse as one or more assignments +(a G-code-only body for example, currently unsupported and warned). +The host block is preserved in either case so diagnostic readers can +still see the IF-THEN call site.

+
+
+ +
+
public bool Applied { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + + +

+ BodyText + +

+ +

Raw body text after the THEN keyword, retained verbatim for +diagnostics and round-trip visibility. The structured sub-section +actually lifted on a truthy condition lives at +Parsing.FanucIfThen.PendingAssignments, populated by the +parsing syntax via NcSyntaxUtil's +GrabTagAssignment.

+
+
+ +
+
public string BodyText { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Condition + +

+ +

Raw boolean expression text from inside the IF [...] brackets. +String at parsing time; +VariableEvaluatorSyntax's pass-2 tree +walk substitutes a numeric literal in place when the expression +evaluates successfully. FanucIfThenSyntax reads the resulting +JSON node polymorphically (number → truthy gate; remaining string → +unevaluated warning).

+
+
+ +
+
public string Condition { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucMacroCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucMacroCall.html new file mode 100644 index 00000000..50bbd276 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucMacroCall.html @@ -0,0 +1,390 @@ + + + + + Class FanucMacroCall | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucMacroCall +

+ +
+
Namespace
Hi.NcParsers.Keywords
+
Assembly
HiMech.dll
+
+ +

One-shot custom-macro-call record written by +FanucMacroCallSyntax. Lives on both the +G65 host block (the caller) and every inlined block of the +macro body — so a cache-dump reader can land on any block inside the +macro and immediately see “this block belongs to a G65 call of +File with these argument bindings” without back-walking +to find the host.

+

+Each inlined block additionally carries the resolved +Vars.Local #1-#26 bindings derived from Args +(see FanucMacroArgumentMap), so +LocalVariableLookup +resolves macro args in a single-block lookup. Frame isolation is +structural: caller blocks never have Vars.Local written, so +after the macro body ends, the next caller block reads null +for any #1-#26 without any explicit frame marker. +

+
+
+ +
+
public class FanucMacroCall
+
+ + + + +
+
Inheritance
+
+ +
FanucMacroCall
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ Args + +

+ +

Argument-letter → numeric-value map captured from the call line +(e.g., G65 P9100 A1.5 B2.{ “A”: 1.5, “B”: 2.0 }). +The matching Vars.Local bindings on each inlined block are +derived from this via the Type-I argument-letter map +(FanucMacroArgumentMap).

+
+
+ +
+
public JsonObject Args { get; set; }
+
+ + + + + +

Property Value

+
+
JsonObject
+
+
+ + + + + + + + + + +

+ FileName + +

+ +

Bare matched file name (e.g. “O9100.NC”). The resolver +tries several fallback patterns +(FilenamePatterns); +this records which one hit. JSON-portable across environments — +the folder context lives on the host's +SubProgramFolderConfig dependency, not encoded here.

+
+
+ +
+
public string FileName { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ L + +

+ +

Repeat count from the L parameter; defaults to 1 when absent.

+
+
+ +
+
public int L { get; set; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + + +

+ P + +

+ +

Macro program number from the P parameter (e.g., 9100 for O9100).

+
+
+ +
+
public int P { get; set; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + + +

+ Term + +

+ +

Triggering keyword (always “G65”).

+
+
+ +
+
public string Term { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucModalMacro.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucModalMacro.html new file mode 100644 index 00000000..585d6956 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.FanucModalMacro.html @@ -0,0 +1,386 @@ + + + + + Class FanucModalMacro | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucModalMacro +

+ +
+
Namespace
Hi.NcParsers.Keywords
+
Assembly
HiMech.dll
+
+ +

Modal-macro-call record left by +FanucModalMacroSyntax. Carries Fanuc +G66 setup state forward block-to-block until cancelled by +G67. The section is also written on the G67 block itself +(with Term = “G67”) so cache dumps show the cancel +edge; subsequent blocks then carry no section at all.

+

+Per-block expansion of the modal call into an actual macro inline at +every positioning move is not yet implemented — a +FanucModalMacro--NotExpanded warning is emitted on the setup +block to flag the simulation gap. The setup state itself is captured +faithfully so external tooling can detect "this block sits inside a +G66 modal" via the carried section. +

+
+
+ +
+
public class FanucModalMacro
+
+ + + + +
+
Inheritance
+
+ +
FanucModalMacro
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ Args + +

+ +

Argument-letter → numeric-value map captured from the G66 +setup line. Null on a G67 cancel block.

+
+
+ +
+
public JsonObject Args { get; set; }
+
+ + + + + +

Property Value

+
+
JsonObject
+
+
+ + + + + + + + + + +

+ FileName + +

+ +

Bare matched file name (e.g. “O9000.NC”) that would supply +the modal-call macro body. Null on a G67 cancel block or +when the file could not be resolved at the setup site. Same +JSON-portable form as FileName — the +folder context lives on the host's SubProgramFolderConfig +dependency, not encoded here.

+
+
+ +
+
public string FileName { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ L + +

+ +

Repeat count from the L parameter; defaults to 1 when absent. Null on a G67 cancel block.

+
+
+ +
+
public int? L { get; set; }
+
+ + + + + +

Property Value

+
+
int?
+
+
+ + + + + + + + + + +

+ P + +

+ +

Macro program number from the P parameter on the G66 setup. Null on a G67 cancel block.

+
+
+ +
+
public int? P { get; set; }
+
+ + + + + +

Property Value

+
+
int?
+
+
+ + + + + + + + + + +

+ Term + +

+ +

Triggering keyword: “G66” for setup / modal-active blocks, +“G67” for the cancel block. Carried blocks downstream of a +G66 setup mirror the setup section verbatim.

+
+
+ +
+
public string Term { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMotionEventDef.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMotionEventDef.html index 64604e16..71024aaf 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMotionEventDef.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMotionEventDef.html @@ -6,7 +6,7 @@ - + @@ -97,11 +97,24 @@ Interface IMotionEventDef
Assembly
HiMech.dll
-

One-shot motion event — present only on blocks that actually issue a -motion command. Used by motion semantics (McLinearMotionSemantic, +

One-shot motion event — present on every block whose source programmed +a motion command, regardless of whether the resulting displacement is non-zero. +A redundant G01 X10 on a block already at X10 still gets a +MotionEvent; the motion semantics +(McLinearMotionSemantic, McArcMotionSemantic, ClLinearMotionSemantic) -as the trigger to emit motion IAct. NOT carried -forward across blocks. Property names are used as JSON keys via nameof.

+then early-return on distance <= 0 and emit no +IAct. NOT carried forward across blocks.

+

+Reason for the "programmed, not displaced" definition: Fanuc G66 modal +macro fires once per programmed motion command (per Fanuc spec — +no distance gate), so FanucModalMacroSyntax.Expansion uses +MotionEvent presence as its trigger. Suppressing the section +on zero-distance moves would silently change G66 behaviour. The modal +sibling MotionState separately latches the Group-01 mode for +readers that only need to know "what G-code is active". +

+Property names are used as JSON keys via nameof.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.MacroFrame.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.MacroFrame.html new file mode 100644 index 00000000..f66fb666 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.MacroFrame.html @@ -0,0 +1,275 @@ + + + + + Class MacroFrame | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MacroFrame +

+ +
+
Namespace
Hi.NcParsers.Keywords
+
Assembly
HiMech.dll
+
+ +

Top-level integer marker stamped onto a SyntaxPiece's JSON +to identify which call frame the block belongs to. Brand-agnostic by +design — written by FanucMacroCallSyntax +today, reusable by any future call-inlining syntax (Fanuc G66 +modal expansion, Heidenhain LBL CALL, …) that needs +local-variable isolation across call boundaries.

+

+Semantics: the value is an opaque id; only equality matters. Two +blocks with the same MacroFrame id share a call frame +(locals visible across them via single-step carry); two blocks with +different ids do not. The id 0 is reserved for the main +program frame and is returned by Get(JsonObject) when the field is +absent — so a plain caller block needs no stamp and yet compares +distinct from any inlined frame. +

+

+Stored as a top-level JSON int (not an object section) so it stays +lightweight on every inlined block. Decoupled from +FanucMacroCall: that section is a diagnostic record of +the call (what file, what args), while MacroFrame is the +purely functional marker the local-variable I/O syntaxes consult. +

+
+
+ +
+
public static class MacroFrame
+
+ + + + +
+
Inheritance
+
+ +
MacroFrame
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ Get(JsonObject) + +

+ +

Reads the frame id off a block, returning 0 (main frame) +when the field is absent or non-integer.

+
+
+ +
+
public static int Get(JsonObject json)
+
+ +

Parameters

+
+
json JsonObject
+
+
+ +

Returns

+
+
int
+
+
+ + + + + + + + + + + + + +

+ Set(JsonObject, int) + +

+ +

Stamps the frame id onto a block. Overwrites any previous value. +Callers writing the main-frame default (0) should simply +leave the field absent rather than calling this with 0.

+
+
+ +
+
public static void Set(JsonObject json, int frameId)
+
+ +

Parameters

+
+
json JsonObject
+
+
frameId int
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html index 5e05572d..cef5be59 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramCall.html @@ -6,7 +6,7 @@ - + @@ -97,11 +97,19 @@ Class SubProgramCall
Assembly
HiMech.dll
-

Subprogram call record left on the M98 / M198 host block by -SubProgramCallSyntax after the subprogram -file has been inlined into the source layer. The call itself emits no -motion act; this section is bookkeeping so cache dumps and diagnostic -readers can see "this block triggered an inline of file File".

+

Subprogram call record left by +SubProgramCallSyntax on the M98 / +M198 host block and on every inlined body block. The call itself +emits no motion act; this section is bookkeeping so cache dumps and +diagnostic readers can see "this block triggered (or sits inside) +an inline of program P".

+

+M98 and M198 share the exact same section shape. The +difference between them is purely environmental — which folder the +resolver looks in (SubProgramFolderConfig.InternalFolder vs +ExternalFolder) — and that lives on the dependency, not in +this JSON record. +

@@ -182,19 +190,25 @@ readers can see "this block triggered an inline of file File&q - + -

- File +

+ FileName

-

Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched.

+

Bare matched file name (e.g. “O1234.NC”). The resolver +tries several fallback patterns +(FilenamePatterns); +this records which one hit. JSON-portable across environments — +the folder context (internal vs external storage) is captured by +the host's SubProgramFolderConfig dependency, not encoded +here.

-
public string File { get; set; }
+
public string FileName { get; set; }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html index aa03616f..8ca5876c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.SubProgramReturn.html @@ -6,7 +6,7 @@ - + @@ -100,8 +100,7 @@ Class SubProgramReturn

Subprogram return record left on the M99 host block by SubProgramReturnSyntax. Return blocks produce no motion acts; this section makes the consumed M99 visible -in cache dumps and reserves a slot for future M99 P{seq} -(return-to-sequence-number) support.

+in cache dumps and surfaces the M99 P{seq} jump decision.

@@ -182,6 +181,42 @@ in cache dumps and reserves a slot for future M99 P{seq} + + +

+ JumpedToN + +

+ +

Set to P when the M99 actually redirected control +flow to the caller's N{seq} block via +LazyLinkedList<T>.ReplaceSource. Null on plain M99 +(no P), and on M99 P{seq} that fell through because the jump +could not be carried out.

+
+
+ +
+
public int? JumpedToN { get; set; }
+
+ + + + + +

Property Value

+
+
int?
+
+
+ + + + + + + +

@@ -190,10 +225,11 @@ in cache dumps and reserves a slot for future M99 P{seq}

Optional caller sequence number from the P parameter -(M99 P{seq}). Null on a plain M99. Currently -recorded but not yet honoured — the subprogram's tail -continues straight into the caller's next block, regardless of -P.

+(M99 P{seq}). Null on a plain M99. When non-null +and the jump fires, JumpedToN is set to the same +value; when the jump is suppressed (no caller frame, label not +found, iteration limit reached) JumpedToN stays +null and a warning is emitted.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html index f51083a4..b136f75d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html @@ -114,6 +114,36 @@ comments (and any embedded CsScript) still take effect. Not a comment: a comment is static metadata, block skip is a runtime toggle that can change per machine/operator setting. + + +
+
CallFrame
+

One entry in Frames. Holds the caller-side +information consumers need to “unwind” or “look back” — currently +only the relative file path of the caller, used by +SubProgramReturnSyntax on +M99 P{seq} to locate the caller's N{seq} block.

+
+
+
+
CallStack
+

JSON-section data shape representing the active call-frame stack on +a block — pushed by call-and-inline syntaxes +(SubProgramCallSyntax for M98/M198, +FanucMacroCallSyntax for G65, and +FanucModalMacroSyntax's expansion +phase for G66 implicit triggers) and popped by +SubProgramReturnSyntax on M99. Every +block between push and pop carries the section forward via +ModalCarrySyntax; the caller's blocks +before push and after pop carry the surrounding stack state +(typically empty when running from the main file).

+

+The section is wrapped in a JsonObject rather than +exposed as a bare JsonArray so it fits ModalCarry's +"deep-clone JsonObject" carry pattern — the array of frames lives +inside Frames. +

@@ -164,6 +194,97 @@ Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift).
Dwell

Section key holder + concrete implementation for IDwellDef.

+
+
+
+
FanucGoto
+

Fanuc Custom Macro B GOTO record. Stamped on the host block by +FanucGotoSyntax after the control-flow +decision has been made; produced earlier by +FanucGotoParsingSyntax as a parsing-stage +sub-section (Parsing.FanucGoto) carrying the raw captured fields.

+

+Two source forms map to the same shape: +

  • GOTO <n> — unconditional jump. Condition is null.
  • IF [<bool-expr>] GOTO <n> — conditional jump. + Condition holds the expression text from inside the + brackets.
+ +

+At parsing time N is a raw token from the source — it may +be a literal ("100"), a variable reference ("#1"), or a +bracketed expression ("#[#2+5]"). VariableEvaluatorSyntax +substitutes a resolved literal back into the same field in the +Evaluation bundle; FanucGotoSyntax then +int.TryParses the final string to produce an int target. +

+
+
+
+
FanucIfThen
+

Fanuc Custom Macro B IF [<cond>] THEN <body> +single-block conditional record. Stamped on the host block by +FanucIfThenSyntax after the gate +decision; produced earlier by +FanucIfThenParsingSyntax as a parsing-stage +sub-section (Parsing.FanucIfThen) carrying the raw captured fields +plus an internal PendingAssignments sub-object harvested from the +body text.

+

+Spec: IF [bool-expr] THEN <stmt> executes <stmt> +only when the condition is truthy. Unlike FanucGoto's +conditional form there is no jump — the body affects the current block +only, no source splice, no label scan, no iteration watchdog. The most +common body shape is a single Custom Macro B assignment +(#nnn = <expr>); multiple assignments in one body are also +accepted and lifted together. +

+

+Condition is held as a string at parsing time so +VariableEvaluatorSyntax's pass-2 tree walk can substitute +it to a numeric JsonValue in place; +the FanucIfThenSyntax tail then reads the resolved node polymorphically +via the same ReadCondition shape used by +FanucGotoSyntax. +

+
+
+
+
FanucMacroCall
+

One-shot custom-macro-call record written by +FanucMacroCallSyntax. Lives on both the +G65 host block (the caller) and every inlined block of the +macro body — so a cache-dump reader can land on any block inside the +macro and immediately see “this block belongs to a G65 call of +File with these argument bindings” without back-walking +to find the host.

+

+Each inlined block additionally carries the resolved +Vars.Local #1-#26 bindings derived from Args +(see FanucMacroArgumentMap), so +LocalVariableLookup +resolves macro args in a single-block lookup. Frame isolation is +structural: caller blocks never have Vars.Local written, so +after the macro body ends, the next caller block reads null +for any #1-#26 without any explicit frame marker. +

+
+
+
+
FanucModalMacro
+

Modal-macro-call record left by +FanucModalMacroSyntax. Carries Fanuc +G66 setup state forward block-to-block until cancelled by +G67. The section is also written on the G67 block itself +(with Term = “G67”) so cache dumps show the cancel +edge; subsequent blocks then carry no section at all.

+

+Per-block expansion of the modal call into an actual macro inline at +every positioning move is not yet implemented — a +FanucModalMacro--NotExpanded warning is emitted on the setup +block to flag the simulation gap. The setup state itself is captured +faithfully so external tooling can detect "this block sits inside a +G66 modal" via the carried section. +

@@ -215,6 +336,32 @@ do not share this key, because their data shapes are richer.
MachineCoordinateState

Section key holder for IMachineCoordinateStateDef.

+
+
+
+
MacroFrame
+

Top-level integer marker stamped onto a SyntaxPiece's JSON +to identify which call frame the block belongs to. Brand-agnostic by +design — written by FanucMacroCallSyntax +today, reusable by any future call-inlining syntax (Fanuc G66 +modal expansion, Heidenhain LBL CALL, …) that needs +local-variable isolation across call boundaries.

+

+Semantics: the value is an opaque id; only equality matters. Two +blocks with the same MacroFrame id share a call frame +(locals visible across them via single-step carry); two blocks with +different ids do not. The id 0 is reserved for the main +program frame and is returned by Get(JsonObject) when the field is +absent — so a plain caller block needs no stamp and yet compares +distinct from any inlined frame. +

+

+Stored as a top-level JSON int (not an object section) so it stays +lightweight on every inlined block. Decoupled from +FanucMacroCall: that section is a diagnostic record of +the call (what file, what args), while MacroFrame is the +purely functional marker the local-variable I/O syntaxes consult. +

@@ -274,11 +421,19 @@ do not share this key, because their data shapes are richer.
SubProgramCall
-

Subprogram call record left on the M98 / M198 host block by -SubProgramCallSyntax after the subprogram -file has been inlined into the source layer. The call itself emits no -motion act; this section is bookkeeping so cache dumps and diagnostic -readers can see "this block triggered an inline of file File".

+

Subprogram call record left by +SubProgramCallSyntax on the M98 / +M198 host block and on every inlined body block. The call itself +emits no motion act; this section is bookkeeping so cache dumps and +diagnostic readers can see "this block triggered (or sits inside) +an inline of program P".

+

+M98 and M198 share the exact same section shape. The +difference between them is purely environmental — which folder the +resolver looks in (SubProgramFolderConfig.InternalFolder vs +ExternalFolder) — and that lives on the dependency, not in +this JSON record. +

@@ -286,8 +441,7 @@ readers can see "this block triggered an inline of file File&q

Subprogram return record left on the M99 host block by SubProgramReturnSyntax. Return blocks produce no motion acts; this section makes the consumed M99 visible -in cache dumps and reserves a slot for future M99 P{seq} -(return-to-sequence-number) support.

+in cache dumps and surfaces the M99 P{seq} jump decision.

@@ -459,11 +613,24 @@ as NaN sentinels.
IMotionEventDef
-

One-shot motion event — present only on blocks that actually issue a -motion command. Used by motion semantics (McLinearMotionSemantic, +

One-shot motion event — present on every block whose source programmed +a motion command, regardless of whether the resulting displacement is non-zero. +A redundant G01 X10 on a block already at X10 still gets a +MotionEvent; the motion semantics +(McLinearMotionSemantic, McArcMotionSemantic, ClLinearMotionSemantic) -as the trigger to emit motion IAct. NOT carried -forward across blocks. Property names are used as JSON keys via nameof.

+then early-return on distance <= 0 and emit no +IAct. NOT carried forward across blocks.

+

+Reason for the "programmed, not displaced" definition: Fanuc G66 modal +macro fires once per programmed motion command (per Fanuc spec — +no distance gate), so FanucModalMacroSyntax.Expansion uses +MotionEvent presence as its trigger. Suppressing the section +on zero-distance moves would silently change G66 behaviour. The modal +sibling MotionState separately latches the Group-01 mode for +readers that only need to know "what G-code is active". +

+Property names are used as JSON keys via nameof.
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html new file mode 100644 index 00000000..fb1a5379 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html @@ -0,0 +1,387 @@ + + + + + Enum BareG28Behavior | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+Enum BareG28Behavior +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs
+
Assembly
HiMech.dll
+
+ +

Writes ICompoundMotionDef section for G28 reference point return. +Reads intermediate XYZ from Parsing.G28 +(written by G28Syntax) +and converts to machine coordinates via +ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, ISentenceCarrier, NcDiagnosticProgress).

+

+Must be placed after LinearMotionSyntax in the syntax chain. +Removes the IMotionEventDef section written by +LinearMotionSyntax (G28 handles its own motion). +Overwrites root MachineCoordinateState +and ProgramXyz with reference position +for subsequent block lookback. +

+
+
+ +
+
public enum BareG28Behavior
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + + +
+ +

Fields +

+
+
Alarm = 0
+ +

Emit Coord-RefReturn–003 validation error and +consume the bare G28 without emitting motion.

+
+
AllAxesHome = 1
+ +

Interpret bare G28 as if every configured axis were +listed at its current modal value, so item 0 (intermediate) is +a no-op and item 1 sends each configured axis to its home. +Requires an IMachineAxisConfig dep; without one +the syntax falls back to Alarm.

+
+
+ +

Examples

+

All cases hardcode a TestDeps.HomeMc with X/Y home at 0 and Z +home at 100 (typical mill where Z-home is above the table) and leave +the ProgramToMcTransform chain at identity so the final +ProgramXyz equals MachineCoordinateState. The G28 +pattern emits a 2-item CompoundMotion: item 0 is the +intermediate point in ProgramXyz, item 1 is the final position +in MachineCoordinateState. Axes not present in the G28 block +keep the previous-block MC value rather than going home.

+

+G91 G28 X0 Y0 Z0 with a #Previous: block carrying +MachineCoordinateState=(50,60,70) — all three axes go home, +so the final MC is the configured home (0,0,100): +

+#Previous: +
{ "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 70 } }
+#BeforeBuild: +
{ "Parsing": { "G28": { "X": 0, "Y": 0, "Z": 0 } } }
+#AfterBuild: +
{
+  "CompoundMotion": {
+    "Term": "G28",
+    "Items": [
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 }
+      },
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 100 }
+      }
+    ]
+  },
+  "ProgramXyz": { "X": 0, "Y": 0, "Z": 100 }
+}
+G91 G28 Z0 — only Z goes to its home; X/Y inherit from the +previous block's MC. Item 0's intermediate ProgramXyz takes +X/Y from the inherited program XYZ (= previous MC under identity +transform) and Z from the literal 0 in the G28 block: +#Previous: +
{ "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 70 } }
+#BeforeBuild: +
{ "Parsing": { "G28": { "Z": 0 } } }
+#AfterBuild: +
{
+  "CompoundMotion": {
+    "Term": "G28",
+    "Items": [
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "ProgramXyz": { "X": 50, "Y": 60, "Z": 0 }
+      },
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 100 }
+      }
+    ]
+  },
+  "ProgramXyz": { "X": 50, "Y": 60, "Z": 100 }
+}
+No IHomeMcConfig dep on the dependency list — the +syntax early-returns and the G28 sub-section stays in Parsing +for an upstream consumer or downstream syntax to handle: +#BeforeBuild: +
{ "Parsing": { "G28": { "X": 0, "Y": 0, "Z": 0 } } }
+#AfterBuild: +
{ "Parsing": { "G28": { "X": 0, "Y": 0, "Z": 0 } } }
+

+Rotary cases below add TestDeps.AxisConfig declaring B as +rotary and extend HomeMc with the conventional B home at 0°. +Each rotary block uses literal B = 45° so item 0's intermediate +(45°), item 1's home (0°), and #Previous: modal B (30°) are +pairwise distinct — a test that swaps any two values for any other +is caught by the assertion. The wrap pass +(McAbcCyclicPathSyntax) is a different syntax, so +these per-SUT conformance assertions show only the raw literal / +canonical-home values written by this syntax, before any cyclic +normalization runs. +

+G91 G28 B45. — pure rotary G28. Emits a 2-item +CompoundMotion whose items carry only ABC keys in MC; no XYZ +ProgramXyz and no XYZ MC because the block doesn't reference +X/Y/Z (and the conformance harness doesn't run +McXyzSyntax downstream — in the full pipeline that +syntax fills root MachineCoordinateState's XYZ from root +ProgramXyz, but with no XYZ in the block there's nothing to +fill anyway). Root MC.B holds the canonical home for modal +carry-forward; root ProgramXyz is not written: +#BeforeBuild: +
{ "Parsing": { "G28": { "B": 45 } } }
+#AfterBuild: +
{
+  "MachineCoordinateState": { "B": 0 },
+  "CompoundMotion": {
+    "Term": "G28",
+    "Items": [
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "MachineCoordinateState": { "B": 45 }
+      },
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "MachineCoordinateState": { "B": 0 }
+      }
+    ]
+  }
+}
+G28 X0. B45. mixed XYZ + rotary. Both axis kinds occupy the +same two items: item 0 carries the XYZ intermediate +ProgramXyz alongside the rotary literal in MC; item 1 +carries the final XYZ MC alongside the rotary home in MC. Root +MachineCoordinateState here holds only the rotary modal value +(B = 0, the home); the XYZ portion of root MC would be filled by +the downstream McXyzSyntax in the full pipeline +(out of scope for this per-SUT conformance). Root +MachineCoordinateState appears first because the +rotary-home write happens before CompoundMotion / +ProgramXyz are inserted. #Previous: carries B = 30 so +the prev rotary modal is distinct from both the literal (45) and +the home (0): +#Previous: +
{ "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 70, "B": 30 } }
+#BeforeBuild: +
{ "Parsing": { "G28": { "X": 0, "B": 45 } } }
+#AfterBuild: +
{
+  "MachineCoordinateState": { "B": 0 },
+  "CompoundMotion": {
+    "Term": "G28",
+    "Items": [
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "ProgramXyz": { "X": 0, "Y": 60, "Z": 70 },
+        "MachineCoordinateState": { "B": 45 }
+      },
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "MachineCoordinateState": { "X": 0, "Y": 60, "Z": 70, "B": 0 }
+      }
+    ]
+  },
+  "ProgramXyz": { "X": 0, "Y": 60, "Z": 70 }
+}
+

+Bare G28 — no axis specifiers — exercises the configurable +BareG28 policy. Default Alarm +emits Coord-RefReturn--003 and consumes the G28 without +motion (the diagnostic surfaces through the +NcDiagnosticProgress sink, not the block JSON, so the +canonical #AfterBuild is just an empty object): +

+#BeforeBuild: +
{ "Parsing": { "G28": {} } }
+#AfterBuild: +
{}
+Bare G28 with BareG28 set to +AllAxesHome: the syntax synthesises a +literal at the inherited program position for every configured +linear axis and the previous modal angle for every configured +rotary axis (here X/Y/Z taken from the #Previous: MC under +the identity ProgramToMcTransform, B taken from the prev +modal). Item 0's intermediate therefore equals current (no motion +in stage 1) and item 1 sends each axis to its home: +#Previous: +
{ "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30, "B": 45 } }
+#BeforeBuild: +
{ "Parsing": { "G28": {} } }
+#AfterBuild: +
{
+  "MachineCoordinateState": { "B": 0 },
+  "CompoundMotion": {
+    "Term": "G28",
+    "Items": [
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "ProgramXyz": { "X": 10, "Y": 20, "Z": 30 },
+        "MachineCoordinateState": { "B": 45 }
+      },
+      {
+        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
+        "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 100, "B": 0 }
+      }
+    ]
+  },
+  "ProgramXyz": { "X": 0, "Y": 0, "Z": 100 }
+}
+ + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html index 44b78e9e..c8bfc890 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html @@ -195,6 +195,161 @@ writes a MotionEve
+

Examples

+

All cases below have the current block's ProgramXyz already +set (as a prior ProgramXyzSyntax would have produced) +and run with no #Previous:, so GetLastProgramXyz +returns Vec3d.Zero. The G17 XY plane is implicit +(no PlaneSelect section means PlaneNormalDir = 2).

+

+G02 with I/J — quarter arc from (0,0,0) to (10,0,0) +around (5,0,0); I=5 J=0 are incremental offsets from start +to center. The G02 flag is consumed (Parsing removed +once empty); MotionState + MotionEvent are written: +

+#BeforeBuild: +
{
+  "Parsing": { "Flags": ["G02"], "I": 5, "J": 0 },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 }
+}
+#AfterBuild: +
{
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
+  "MotionState": { "Term": "G02" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": 5, "Y": 0, "Z": 0 },
+    "PlaneNormalDir": 2,
+    "IsCcw": false,
+    "AdditionalCircleNum": 0
+  }
+}
+Modal carry of G02: no motion flag on the current block but a +#Previous: MotionState.Term = "G02" tells us we are +still in circular mode. I/J on the current block describe the arc +the same way: +#Previous: +
{ "MotionState": { "Term": "G02" } }
+#BeforeBuild: +
{
+  "Parsing": { "I": 5, "J": 0 },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 }
+}
+#AfterBuild: +
{
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
+  "MotionState": { "Term": "G02" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": 5, "Y": 0, "Z": 0 },
+    "PlaneNormalDir": 2,
+    "IsCcw": false,
+    "AdditionalCircleNum": 0
+  }
+}
+No I/J/K/R on the block — the per-block arc data is missing, so +the syntax bails out early; the G02 flag stays in +Parsing.Flags for some other syntax to act on (or to surface +as residue if no one does): +#BeforeBuild: +
{
+  "Parsing": { "Flags": ["G02"] },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 }
+}
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["G02"] },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 }
+}
+R-format degenerate (chord = 2R, semicircle): start (0,0,0) +→ end (10,0,0), R=5. perpDistSq resolves to 0 so the +computed center collapses to the chord midpoint (5,0,0); no +sqrt drift on this branch: +#BeforeBuild: +
{
+  "Parsing": { "Flags": ["G02"], "R": 5 },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 }
+}
+#AfterBuild: +
{
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
+  "MotionState": { "Term": "G02" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": 5, "Y": 0, "Z": 0 },
+    "PlaneNormalDir": 2,
+    "IsCcw": false,
+    "AdditionalCircleNum": 0
+  }
+}
+R-format non-trivial: G02 90° arc from (0,0,0) to +(10,10,0) with R=10. The center comes from the cross-product ++ sqrt + normalize path inside ResolveCenterFromR(Vec3d, Vec3d, int, bool, double), +but for this particular axis-aligned chord the rounding errors +cancel and the center lands at exactly (10, 0, 0) — i.e. +no ULP drift here, in contrast to e.g. +McAbcCyclicPathSyntax's rad/deg round-trip: +#BeforeBuild: +
{
+  "Parsing": { "Flags": ["G02"], "R": 10 },
+  "ProgramXyz": { "X": 10, "Y": 10, "Z": 0 }
+}
+#AfterBuild: +
{
+  "ProgramXyz": { "X": 10, "Y": 10, "Z": 0 },
+  "MotionState": { "Term": "G02" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": 10, "Y": 0, "Z": 0 },
+    "PlaneNormalDir": 2,
+    "IsCcw": false,
+    "AdditionalCircleNum": 0
+  }
+}
+G03 CCW with I/J — same geometry as case 0 (start (0,0,0), +end (10,0,0), I=5 J=0 → center (5,0,0)) but the G03 +flag flips IsCcw to true. Direction is the only +differentiating output; arc-center math is unchanged: +#BeforeBuild: +
{
+  "Parsing": { "Flags": ["G03"], "I": 5, "J": 0 },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 }
+}
+#AfterBuild: +
{
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
+  "MotionState": { "Term": "G03" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": 5, "Y": 0, "Z": 0 },
+    "PlaneNormalDir": 2,
+    "IsCcw": true,
+    "AdditionalCircleNum": 0
+  }
+}
+Full circle G02 — start == end (both (0,0,0)), I=5 J=0 +places center off-start at (5,0,0). The +isFullCircle guard (chord length < 1e-6 and +center-to-start > 1e-6) flips AdditionalCircleNum to 1 +so a downstream motion semantic knows to draw the closed loop: +#BeforeBuild: +
{
+  "Parsing": { "Flags": ["G02"], "I": 5, "J": 0 },
+  "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 }
+}
+#AfterBuild: +
{
+  "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 },
+  "MotionState": { "Term": "G02" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": 5, "Y": 0, "Z": 0 },
+    "PlaneNormalDir": 2,
+    "IsCcw": false,
+    "AdditionalCircleNum": 1
+  }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html index a83a881b..07ec9fb0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html @@ -185,6 +185,28 @@ Modal — persists via backward lookback.

+

Examples

+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M08"] } }
+

#AfterBuild:

+
{ "Coolant": { "IsOn": true, "Mode": "Flood" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M09", "M03"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "Coolant": { "IsOn": false, "Mode": "Off" }
+}
+

#Previous:

+
{ "Coolant": { "IsOn": true, "Mode": "Mist" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M03"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "Coolant": { "IsOn": true, "Mode": "Mist" }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html index d5e44c96..e7ba771f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html @@ -190,6 +190,37 @@ Modal carry to subsequent blocks is handled by
+

Examples

+

First block of the stream (no #Previous:) — stamps the default +disabled section so downstream modal lookback always sees a concrete +PathSmoothing: +#BeforeBuild:

+
{ }
+

#AfterBuild:

+
{ "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }
+

G05.1 Q1 with no R — enables, no Level emitted: +#Previous:

+
{ "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }
+

#BeforeBuild:

+
{ "Parsing": { "G05.1": { "Q": 1 } } }
+

#AfterBuild:

+
{ "PathSmoothing": { "IsEnabled": true, "Term": "G05.1" } }
+

G05.1 Q1 R3 — enables and preserves the precision level: +#Previous:

+
{ "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }
+

#BeforeBuild:

+
{ "Parsing": { "G05.1": { "Q": 1, "R": 3 } } }
+

#AfterBuild:

+
{ "PathSmoothing": { "IsEnabled": true, "Term": "G05.1", "Level": 3 } }
+

G05.1 Q0 — disables; any prior Level is dropped (R only meaningful +when enabling): +#Previous:

+
{ "PathSmoothing": { "IsEnabled": true, "Term": "G05.1", "Level": 3 } }
+

#BeforeBuild:

+
{ "Parsing": { "G05.1": { "Q": 0 } } }
+

#AfterBuild:

+
{ "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html index fa98944c..14349bc0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html @@ -182,6 +182,35 @@ Writes resolved state to a Examples +

New F value with explicit G94 mode — both consumed, Unit +derived as mm/min (G94 default): +#BeforeBuild:

+
{ "Parsing": { "Flags": ["G94"], "F": 100 } }
+

#AfterBuild:

+
{ "Feedrate": { "FeedrateValue": 100, "Term": "G94", "Unit": "mm/min" } }
+

G95 mode flag only — feedrate value inherited from +#Previous:; unit recomputed (mm/rev) from the new term: +#Previous:

+
{ "Feedrate": { "FeedrateValue": 50, "Term": "G94", "Unit": "mm/min" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G95"] } }
+

#AfterBuild:

+
{ "Feedrate": { "FeedrateValue": 50, "Term": "G95", "Unit": "mm/rev" } }
+

F value only (no G94/G95 on this block) alongside an unrelated M03 +flag — mode inherits from #Previous:; M03 stays in +Parsing.Flags because CleanupParsing is only invoked +on the mode-flag branch: +#Previous:

+
{ "Feedrate": { "FeedrateValue": 50, "Term": "G95", "Unit": "mm/rev" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M03"], "F": 200 } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "Feedrate": { "FeedrateValue": 200, "Term": "G95", "Unit": "mm/rev" }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html index f539b030..c67fa25e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html @@ -205,7 +205,7 @@ When G68.2 is not active, a validation error is reported. Optional explicit A/B/C on the G53.1 line (post-processor hints) override the IK result. These are read from
Parsing via -ConsumeAxis(JsonObject, string, Sentence, NcDiagnosticProgress) and consumed +ConsumeAxis(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) and consumed to prevent McAbcSyntax from double-processing.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html index 45448d26..78a33b61 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html @@ -189,6 +189,79 @@ so both syntaxes can coexist without double-composing. +

Examples

+

Mat4d arrays are 16 plain doubles in column-major order; pure +translation by (tx,ty,tz) is +[1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. The syntax does not +consume from Parsing — the CYCL DEF cycle number and its +parameters survive for downstream syntaxes / round-trip emission.

+

+CYCL DEF 247 Q339=+1 with a +HeidenhainDatumTable populated so preset +row 1 = (50, 50, 0) — the syntax looks up the row and writes +a synthetic CoordinateId = "DATUM_PRESET_1" reflecting the +resolved preset index: +

+#BeforeBuild: +
{ "Parsing": { "CYCL DEF": 247, "Q339": "+1" } }
+#AfterBuild: +
{
+  "Parsing": { "CYCL DEF": 247, "Q339": "+1" },
+  "CoordinateOffset": {
+    "CoordinateId": "DATUM_PRESET_1",
+    "Offset_X": 50, "Offset_Y": 50, "Offset_Z": 0
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 50,50,0,1]
+    }
+  ]
+}
+CYCL DEF 7 #5 — datum shift table lookup via the # +index (here mapped to (100, 200, 0)); CoordinateId +records the resolved shift row id: +#BeforeBuild: +
{ "Parsing": { "CYCL DEF": 7, "#": 5 } }
+#AfterBuild: +
{
+  "Parsing": { "CYCL DEF": 7, "#": 5 },
+  "CoordinateOffset": {
+    "CoordinateId": "DATUM_SHIFT_5",
+    "Offset_X": 100, "Offset_Y": 200, "Offset_Z": 0
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,200,0,1]
+    }
+  ]
+}
+CYCL DEF 7 X10 Y20 Z5 — direct X/Y/Z form (no # +index) writes the values straight into the offset; no +HeidenhainDatumTable dep is required. +CoordinateId is the literal "DATUM_SHIFT_DIRECT" +sentinel: +#BeforeBuild: +
{ "Parsing": { "CYCL DEF": 7, "X": 10, "Y": 20, "Z": 5 } }
+#AfterBuild: +
{
+  "Parsing": { "CYCL DEF": 7, "X": 10, "Y": 20, "Z": 5 },
+  "CoordinateOffset": {
+    "CoordinateId": "DATUM_SHIFT_DIRECT",
+    "Offset_X": 10, "Offset_Y": 20, "Offset_Z": 5
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1]
+    }
+  ]
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html index 48420913..51fc782c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html @@ -204,6 +204,55 @@ incremental logic. +

Examples

+

G90 (absolute) on the block — the syntax early-returns without +touching Parsing.X/Y/Z, even though the values look like +incremental deltas: +#BeforeBuild:

+
{
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "Parsing": { "X": 10, "Y": 20, "Z": 30 }
+}
+

#AfterBuild:

+
{
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "Parsing": { "X": 10, "Y": 20, "Z": 30 }
+}
+

G91 (incremental) with a #Previous: block carrying +MachineCoordinateState=(100,200,300). Under the identity +ProgramToMcTransform chain, GetLastProgramXyz recovers +program XYZ equal to MC, so each axis in Parsing is rewritten +to lastAbs + incremental: +#Previous:

+
{ "MachineCoordinateState": { "X": 100, "Y": 200, "Z": 300 } }
+

#BeforeBuild:

+
{
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "Parsing": { "X": 10, "Y": 20, "Z": 30 }
+}
+

#AfterBuild:

+
{
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "Parsing": { "X": 110, "Y": 220, "Z": 330 }
+}
+

G91 + Parsing.G28 sub-section — exercises the second entry +of the default WorkingPathList; the root Parsing has +no X/Y/Z so the first path no-ops, but the +[“Parsing”,“G28”] path picks up the G28 intermediate axes +and resolves them against the same lastProgramXyz: +#Previous:

+
{ "MachineCoordinateState": { "X": 100, "Y": 200, "Z": 300 } }
+

#BeforeBuild:

+
{
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "Parsing": { "G28": { "X": 5, "Y": 10, "Z": 15 } }
+}
+

#AfterBuild:

+
{
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "Parsing": { "G28": { "X": 105, "Y": 210, "Z": 315 } }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html index c1ce1eeb..2df44f41 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html @@ -185,6 +185,85 @@ Default coordinate ID is set by Examples +

The Mat4d arrays below are written as 16 plain doubles in +column-major order; the first 12 are the identity 3×3 rotation, the +last 4 are the translation column (tx, ty, tz, 1). So a pure +translation by (tx, ty, tz) is +[1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1].

+

+G54 flag on the block but no IIsoCoordinateConfig on +the dep list — the resolved offset falls back to Vec3d.Zero +and the composed translation is the identity matrix: +

+#BeforeBuild: +
{ "Parsing": { "Flags": ["G54"] } }
+#AfterBuild: +
{
+  "CoordinateOffset": {
+    "CoordinateId": "G54",
+    "Offset_X": 0, "Offset_Y": 0, "Offset_Z": 0
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+G55 flag with an IsoCoordinateTable +providing G55 → (100, 50, -200) — the offset is written to +the CoordinateOffset section and the same translation is +composed into the transform chain: +#BeforeBuild: +
{ "Parsing": { "Flags": ["G55"] } }
+#AfterBuild: +
{
+  "CoordinateOffset": {
+    "CoordinateId": "G55",
+    "Offset_X": 100, "Offset_Y": 50, "Offset_Z": -200
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,50,-200,1]
+    }
+  ]
+}
+No coordinate flag on the current block (e.g. an unrelated M03) but +#Previous: carried G54 — modal lookback inherits +G54, the dep is re-queried (so Offset_X/Y/Z are taken +from the table, not from the previous block), and the transform +chain is rebuilt. The unrelated M03 flag survives in +Parsing.Flags because CleanupParsing only fires on the +new-coord-flag branch: +#Previous: +
{
+  "CoordinateOffset": {
+    "CoordinateId": "G54",
+    "Offset_X": 10, "Offset_Y": 20, "Offset_Z": -100
+  }
+}
+#BeforeBuild: +
{ "Parsing": { "Flags": ["M03"] } }
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["M03"] },
+  "CoordinateOffset": {
+    "CoordinateId": "G54",
+    "Offset_X": 10, "Offset_Y": 20, "Offset_Z": -100
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,-100,1]
+    }
+  ]
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html index 97a37b1f..d77f89a2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html @@ -188,6 +188,93 @@ Managed commands: G68, G69 (idempotent with Examples +

All cases below avoid the cos/sin rotation math by using either G69 +cancel (identity), the first-block default (no transform composed), +or modal carry of an identity Mat4d. Mat4d arrays are 16 +plain doubles in column-major order — see +IsoCoordinateOffsetSyntax for the template. A future +round can add a non-trivial G68 case by dumping the actual output +and pasting the 16 doubles back into the marker.

+

+First block of the stream (no #Previous:, no G68/G69 on the +block) — CarryForwardFromPrevious stamps a default +TiltTransform.Term = "G69" so downstream lookback always +sees a concrete state; no transform chain entry is composed: +

+#BeforeBuild: +
{ }
+#AfterBuild: +
{ "TiltTransform": { "Term": "G69" } }
+G69 flag on the block — TryHandleG69 consumes it, writes the +G69 section, and composes the identity Mat4d into the chain so any +previously composed tilt rotation is overridden: +#BeforeBuild: +
{ "Parsing": { "Flags": ["G69"] } }
+#AfterBuild: +
{
+  "TiltTransform": { "Term": "G69" },
+  "ProgramToMcTransform": [
+    {
+      "Source": "TiltTransform",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+Modal carry: no G68/G69 on the current block, but +#Previous: carries an active G68 with identity tilt Mat4d in +its chain. The current block inherits TiltTransform.Term = "G68" +and re-composes the same Mat4d into its own chain; unrelated M03 +flag survives because this syntax does not touch Parsing +during the carry path: +#Previous: +
{
+  "TiltTransform": { "Term": "G68" },
+  "ProgramToMcTransform": [
+    {
+      "Source": "TiltTransform",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+#BeforeBuild: +
{ "Parsing": { "Flags": ["M03"] } }
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["M03"] },
+  "TiltTransform": { "Term": "G68" },
+  "ProgramToMcTransform": [
+    {
+      "Source": "TiltTransform",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+Non-trivial G68 rotation: 90° around the Z axis (no I/J/K → plane +normal of the default G17 plane) at the origin (no X/Y/Z → all 0). +The Mat4d column-major layout is rotation 90° about Z (no +translation since pivot is the origin); cos(π/2) is not +exactly 0 in IEEE-754 so the diagonal carries the +6.123233995736766E-17 drift produced by +Math.Cos(Math.PI / 2) — preserved verbatim per the +no-shorthand marker convention: +#BeforeBuild: +
{ "Parsing": { "G68": { "R": 90 } } }
+#AfterBuild: +
{
+  "TiltTransform": { "Term": "G68" },
+  "ProgramToMcTransform": [
+    {
+      "Source": "TiltTransform",
+      "Kind": "Static",
+      "Mat4d": [6.123233995736766E-17, 1, 0, 0, -1, 6.123233995736766E-17, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
+    }
+  ]
+}
+

Remarks

Input: Parsing.G68 → {X,Y,Z,I,J,K,R} from ParameterizedFlagSyntax. diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html index 95a4850b..2cc5c18b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html @@ -188,6 +188,75 @@ Modal — persists via backward lookback until changed or cancelled. +

Examples

+

Mat4d arrays are 16 plain doubles in column-major order; pure +translation by (tx,ty,tz) is +[1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1] — see +IsoCoordinateOffsetSyntax for the column-major template.

+

+First block of the stream (no #Previous:) — the syntax +stamps a zero-offset section and an identity translation in the +chain so downstream lookback always sees a concrete state: +

+#BeforeBuild: +
{ }
+#AfterBuild: +
{
+  "IsoLocalCoordinateOffset": { "Offset_X": 0, "Offset_Y": 0, "Offset_Z": 0 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "IsoLocalCoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+G52 X10 Y20 Z5 on a non-first block alongside an unrelated +M03 flag — the G52 sub-section is consumed (removed from +Parsing) and the translation is composed into the chain; the +unrelated flag stays because this syntax does not call +CleanupParsing: +#Previous: +
{ "IsoLocalCoordinateOffset": { "Offset_X": 0, "Offset_Y": 0, "Offset_Z": 0 } }
+#BeforeBuild: +
{
+  "Parsing": {
+    "Flags": ["M03"],
+    "G52": { "X": 10, "Y": 20, "Z": 5 }
+  }
+}
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["M03"] },
+  "IsoLocalCoordinateOffset": { "Offset_X": 10, "Offset_Y": 20, "Offset_Z": 5 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "IsoLocalCoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1]
+    }
+  ]
+}
+No G52 on the current block but #Previous: had a non-zero +offset — modal lookback inherits it (with the translation +re-composed into this block's chain): +#Previous: +
{ "IsoLocalCoordinateOffset": { "Offset_X": 10, "Offset_Y": 20, "Offset_Z": 5 } }
+#BeforeBuild: +
{ "Parsing": { "Flags": ["M03"] } }
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["M03"] },
+  "IsoLocalCoordinateOffset": { "Offset_X": 10, "Offset_Y": 20, "Offset_Z": 5 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "IsoLocalCoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1]
+    }
+  ]
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html index 244eef22..b2d71e9b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html @@ -190,6 +190,50 @@ Must be placed after Examples +

G00 explicit + MachineCoordinateState on the block — both the +modal MotionState and the one-shot MotionEvent are +written; IsRapid is set only on rapid (G00); the parsing flag +is consumed and Parsing is cleaned up: +#BeforeBuild:

+
{
+  "Parsing": { "Flags": ["G00"] },
+  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 }
+}
+

#AfterBuild:

+
{
+  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 },
+  "MotionState": { "Term": "G00" },
+  "MotionEvent": { "Form": "McLinear", "IsRapid": true }
+}
+

G01 explicit + MC — same shape but IsRapid is omitted on the +event section (only written when true): +#BeforeBuild:

+
{
+  "Parsing": { "Flags": ["G01"] },
+  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 }
+}
+

#AfterBuild:

+
{
+  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 },
+  "MotionState": { "Term": "G01" },
+  "MotionEvent": { "Form": "McLinear" }
+}
+

No motion flag on the current block but MachineCoordinateState +is present (e.g. a downstream syntax already wrote the endpoint) — +the previous block's MotionState.Term is the only way to know +G00 vs G01, so the modal carry path fires: +#Previous:

+
{ "MotionState": { "Term": "G01" } }
+

#BeforeBuild:

+
{ "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 } }
+

#AfterBuild:

+
{
+  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 },
+  "MotionState": { "Term": "G01" },
+  "MotionEvent": { "Form": "McLinear" }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html index b738a9c6..f0314bb8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html @@ -192,14 +192,39 @@ as program coordinates.

Examples

-

G53 with full axes (G54 offset = 100,50,-200):

-
Input:  G53 G00 X0. Y0. Z0.
-Output: MachineCoordinate = (0, 0, 0)
-        ProgramXyz = (-100, -50, 200)   [mc * inverse(transform)]
-

G53 with partial axes (only Z specified):

-
Input:  G53 Z0.
-Output: MachineCoordinate = (prevMcX, prevMcY, 0)
-        ProgramXyz derived from MC * inverse(transform)
+

G53 with full XYZ on a first block (no #Previous:) — FindPreviousMc +falls back to Vec3d.Zero, transform defaults to identity, so +ProgramXyz equals MachineCoordinateState: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["G53"], "X": 10, "Y": 20, "Z": 30 } }
+

#AfterBuild:

+
{
+  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 },
+  "ProgramXyz": { "X": 10, "Y": 20, "Z": 30 }
+}
+

G53 with only Z specified — FindPreviousMc picks up X/Y from the +previous block's MachineCoordinateState; Z is overwritten: +#Previous:

+
{ "MachineCoordinateState": { "X": 100, "Y": 50, "Z": -200 } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G53"], "Z": 0 } }
+

#AfterBuild:

+
{
+  "MachineCoordinateState": { "X": 100, "Y": 50, "Z": 0 },
+  "ProgramXyz": { "X": 100, "Y": 50, "Z": 0 }
+}
+

G91 active on the same block → G53 is ignored per ISO standard; nothing +is consumed and no machine-state section is written: +#BeforeBuild:

+
{
+  "Parsing": { "Flags": ["G53"], "X": 10 },
+  "Positioning": { "Term": "G91" }
+}
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["G53"], "X": 10 },
+  "Positioning": { "Term": "G91" }
+}
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html index 214eefcb..0ad67270 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html @@ -6,7 +6,7 @@ - + @@ -102,6 +102,18 @@ Uses
MachineCoordinateState need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList.

+

+Two stages, mirroring McXyzSyntax: +

  1. Root MachineCoordinateState — anchored at the previous + block's modal rotary state.
  2. CompoundMotion.ItemsKey[*] + — sequential walk through items, anchoring item 0 at the previous + block's modal state and item i > 0 at item i-1's + post-cycle value (per-axis chain). Items without a rotary + MachineCoordinateState are skipped.
+The items pass enables rotary motion (e.g. G28 ABC intermediate / +home stages) to surface as motion IAct +segments rather than a single root-MC stamp. +
@@ -183,6 +195,73 @@ Must be placed after Examples +

Cases below run with no IMachineAxisConfig on the dep +list, so the syntax uses the A/B/C fallback (a configuration +warning is emitted but does not affect the JSON). The syntax is +the tail-pass rotary-wrap centraliser — upstream rotary writers +(McAbcSyntax, G28, G53.1, ...) store raw degrees and +let this pass resolve to the shortest cyclic path.

+

+Current B is within ±180° of the previous B — no wrap needed; the +value is rewritten in place but equals the input: +

+#Previous: +
{ "MachineCoordinateState": { "B": 0 } }
+#BeforeBuild: +
{ "MachineCoordinateState": { "B": 10 } }
+#AfterBuild: +
{ "MachineCoordinateState": { "B": 10 } }
+Current B is 270° but previous B is 0° — the shortest path is the +other way around, so the value is rewritten as -90° (mathematically +equivalent, geometrically the same orientation, but signalling the +shorter rotation to a downstream motion consumer). 270/0 round-trips +through ToRadCycleToDeg with no rounding +noise (1.5π → -0.5π → -90 exactly); other angle pairs (e.g. +350° → -10°) emit a trailing ULP-scale drift instead: +#Previous: +
{ "MachineCoordinateState": { "B": 0 } }
+#BeforeBuild: +
{ "MachineCoordinateState": { "B": 270 } }
+#AfterBuild: +
{ "MachineCoordinateState": { "B": -90 } }
+First block of the stream (no #Previous:) — no anchor to +resolve against, so the syntax early-returns and the raw value is +preserved verbatim: +#BeforeBuild: +
{ "MachineCoordinateState": { "B": 350 } }
+#AfterBuild: +
{ "MachineCoordinateState": { "B": 350 } }
+

+CompoundMotion.Items walk — two items chain: item 0 cycles +against the previous block's modal B = 0° (270° → -90°), and item 1 +cycles against item 0's post-cycle -90° (170° → -190°, since the +shorter path from -90° to 170° wraps backward through -180°). If +item 1 had used the previous-block anchor instead of the chained +anchor, 170° would have stayed at 170° (already in the ±180° window +around 0°), so the test discriminates between chain and no-chain: +

+#Previous: +
{ "MachineCoordinateState": { "B": 0 } }
+#BeforeBuild: +
{
+  "CompoundMotion": {
+    "Items": [
+      { "MachineCoordinateState": { "B": 270 } },
+      { "MachineCoordinateState": { "B": 170 } }
+    ]
+  }
+}
+#AfterBuild: +
{
+  "CompoundMotion": {
+    "Items": [
+      { "MachineCoordinateState": { "B": -90 } },
+      { "MachineCoordinateState": { "B": -190 } }
+    ]
+  }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html index f750c62b..1b5c99cc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html @@ -211,6 +211,37 @@ that need the current-block ABC to compute transforms +

Examples

+

Cases 1 and 2 inject a TestDeps.AxisConfig declaring B and C +as Rotary. Values are stored as raw degrees; +shortest-cyclic resolution is a downstream pass via +McAbcCyclicPathSyntax.

+

+No IMachineAxisConfig dep on the list — early-return +no-op (the syntax only fires when rotary axes are declared): +

+#BeforeBuild: +
{ "Parsing": { "B": 45, "C": 90 } }
+#AfterBuild: +
{ "Parsing": { "B": 45, "C": 90 } }
+AxisConfig declares B+C rotary; Parsing.B/C are consumed +into a freshly created MachineCoordinateState section +(X/Y/Z are deliberately left out so McXyzSyntax can +still derive XYZ later — see class summary): +#BeforeBuild: +
{ "Parsing": { "B": 45, "C": 90 } }
+#AfterBuild: +
{ "MachineCoordinateState": { "B": 45, "C": 90 } }
+Only Parsing.B on the current block; #Previous: +carries a full MC including C=0. The missing C is filled from the +per-axis backward lookback (FindPreviousMcAxis(LazyLinkedListNode<SyntaxPiece>, string)): +#Previous: +
{ "MachineCoordinateState": { "B": 0, "C": 0 } }
+#BeforeBuild: +
{ "Parsing": { "B": 30 } }
+#AfterBuild: +
{ "MachineCoordinateState": { "B": 30, "C": 0 } }
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html index 8af2a71e..fd1c415e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html @@ -218,6 +218,47 @@ Does nothing when the section already carries all three of X/Y/Z +

Examples

+

All cases below stay on the non-dynamic branch (no +PivotTransformSource entry in the +chain) so the RTCP re-derivation path is skipped.

+

+Block has no MachineCoordinateState section at all (pure +parse-only) — the syntax early-returns and the block is unchanged: +

+#BeforeBuild: +
{ "Parsing": { "Flags": ["G00"] } }
+#AfterBuild: +
{ "Parsing": { "Flags": ["G00"] } }
+MC already complete (all three of X/Y/Z present) — the second guard +fires and the section is preserved verbatim (no overwrite even if a +#Previous: MC differed): +#BeforeBuild: +
{ "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 } }
+#AfterBuild: +
{ "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 } }
+Rotary-only MC on a rotary-only block (e.g. a 5-axis B+C trunnion +machine running G00 B45. C90.) — missing X/Y/Z are copied +from the #Previous: block's MC; the rotary keys keep their +existing positions (insertion order) and X/Y/Z are appended. The +previous block's MC carries the modal rotary state alongside X/Y/Z, +but the fallback only reads X/Y/Z from it: +#Previous: +
{
+  "MachineCoordinateState": {
+    "X": 100, "Y": 200, "Z": 300, "B": 0, "C": 0
+  }
+}
+#BeforeBuild: +
{ "MachineCoordinateState": { "B": 45, "C": 90 } }
+#AfterBuild: +
{
+  "MachineCoordinateState": {
+    "B": 45, "C": 90,
+    "X": 100, "Y": 200, "Z": 300
+  }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html index 930ed849..8888db2d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html @@ -191,6 +191,55 @@ and before syntaxes that read MachineCoordinate +

Examples

+

Root ProgramXyz only, no ProgramToMcTransform chain — +composed transform is identity, so MC equals ProgramXyz: +#BeforeBuild:

+
{ "ProgramXyz": { "X": 10, "Y": 20, "Z": 30 } }
+

#AfterBuild:

+
{
+  "ProgramXyz": { "X": 10, "Y": 20, "Z": 30 },
+  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 }
+}
+

Root MachineCoordinateState already present — guarded by the +non-null check, so an upstream syntax's explicit MC is preserved +verbatim (the derivation from ProgramXyz is skipped): +#BeforeBuild:

+
{
+  "ProgramXyz": { "X": 10, "Y": 20, "Z": 30 },
+  "MachineCoordinateState": { "X": 100, "Y": 200, "Z": 300 }
+}
+

#AfterBuild:

+
{
+  "ProgramXyz": { "X": 10, "Y": 20, "Z": 30 },
+  "MachineCoordinateState": { "X": 100, "Y": 200, "Z": 300 }
+}
+

CompoundMotion.Items[*] with ProgramXyz but no +MachineCoordinateState — each item receives its own derived +MC; items that already had MC (or had no ProgramXyz) are +left alone: +#BeforeBuild:

+
{
+  "CompoundMotion": {
+    "Items": [
+      { "ProgramXyz": { "X": 1, "Y": 2, "Z": 3 } },
+      { "MachineCoordinateState": { "X": 9, "Y": 9, "Z": 9 } }
+    ]
+  }
+}
+

#AfterBuild:

+
{
+  "CompoundMotion": {
+    "Items": [
+      {
+        "ProgramXyz": { "X": 1, "Y": 2, "Z": 3 },
+        "MachineCoordinateState": { "X": 1, "Y": 2, "Z": 3 }
+      },
+      { "MachineCoordinateState": { "X": 9, "Y": 9, "Z": 9 } }
+    ]
+  }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html index 5e04f016..508e8255 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html @@ -187,6 +187,28 @@ Downstream consumers (Examples +

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G17"] } }
+

#AfterBuild:

+
{ "PlaneSelect": { "Term": "G17", "Plane": "XY" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G18", "M03"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "PlaneSelect": { "Term": "G18", "Plane": "ZX" }
+}
+

#Previous:

+
{ "PlaneSelect": { "Term": "G19", "Plane": "YZ" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M03"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "PlaneSelect": { "Term": "G19", "Plane": "YZ" }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html index 0b5c5afa..ef7b629e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html @@ -193,6 +193,30 @@ their parameters with cycle-specific G91 semantics. +

Examples

+

G90 explicit — flag consumed, Positioning written with +Mode=“Absolute”: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["G90"] } }
+

#AfterBuild:

+
{ "Positioning": { "Term": "G90", "Mode": "Absolute" } }
+

G91 explicit — flag consumed, Mode=“Incremental”: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["G91"] } }
+

#AfterBuild:

+
{ "Positioning": { "Term": "G91", "Mode": "Incremental" } }
+

No positioning flag on the block but #Previous: carried G91 — +modal lookback inherits G91; the unrelated M03 flag is left alone: +#Previous:

+
{ "Positioning": { "Term": "G91", "Mode": "Incremental" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M03"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "Positioning": { "Term": "G91", "Mode": "Incremental" }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html index 13c6c6b4..b600bd63 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html @@ -6,7 +6,7 @@ - + @@ -121,6 +121,15 @@ Local variables (#1-#33, scope: macro call frame) are also untouched here; their lifecycle belongs to G65/G66/M99 push/pop, not program end.

+

+Also clears any active FanucModalMacro on the same +edge: a G66 modal that was still active when M02/M30 hit is +implicitly cancelled, matching real Fanuc reset behaviour. The +section is overwritten with a G67-shaped cancel marker so +the carry mechanism in +FanucModalMacroSyntax sees the boundary +and does not propagate the modal past the program-end edge. +

@@ -202,6 +211,44 @@ program end. +

Examples

+

M30 with a populated Vars.Volatile — the dictionary is wiped +to an empty JsonObject in place (assignment, not removal, so +downstream snapshots can distinguish “cleared on program end” from +“block never had volatile data”): +#BeforeBuild:

+
{
+  "ProgramEnd": { "Term": "M30" },
+  "Vars": { "Volatile": { "#100": 1.5, "#101": 2.5 } }
+}
+

#AfterBuild:

+
{
+  "ProgramEnd": { "Term": "M30" },
+  "Vars": { "Volatile": {} }
+}
+

M02 with an active G66 FanucModalMacro and no +pre-existing Vars — the modal is overwritten with a +G67-shaped cancel marker (P/L dropped), and a fresh +Vars.Volatile dictionary is created: +#BeforeBuild:

+
{
+  "ProgramEnd": { "Term": "M02" },
+  "FanucModalMacro": { "Term": "G66", "P": 1234, "L": 1 }
+}
+

#AfterBuild:

+
{
+  "ProgramEnd": { "Term": "M02" },
+  "FanucModalMacro": { "Term": "G67" },
+  "Vars": { "Volatile": {} }
+}
+

No ProgramEnd on the block (regular machining line) — the +guard rejects the block; Vars.Volatile is left intact for +downstream blocks to inherit via carry: +#BeforeBuild:

+
{ "Vars": { "Volatile": { "#100": 1.5 } } }
+

#AfterBuild:

+
{ "Vars": { "Volatile": { "#100": 1.5 } } }
+ @@ -311,7 +358,7 @@ program end. -

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html index 1daed1ff..90471925 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html @@ -187,6 +187,20 @@ Must be placed before syntaxes that depend on the ProgramEnd section. +

Examples

+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M30"] } }
+

#AfterBuild:

+
{ "ProgramEnd": { "Term": "M30" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M02"] } }
+

#AfterBuild:

+
{ "ProgramEnd": { "Term": "M02" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M03"] } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["M03"] } }
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html index 5dd7e17b..8e249bbf 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html @@ -193,6 +193,23 @@ pauses the run is a runtime/semantic decision gated by the operator's +

Examples

+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M00"] } }
+

#AfterBuild:

+
{ "ProgramStop": { "Term": "M00" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M01", "M03"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "ProgramStop": { "Term": "M01" }
+}
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M01", "M00"] } }
+

#AfterBuild:

+
{ "ProgramStop": { "Term": "M00" } }
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html index e8b5bbf3..35bf8d83 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html @@ -188,6 +188,39 @@ cross-node lookback for last position.

+

Examples

+

SUT uses Default so the default +WorkingPathList points at the Parsing root. All cases +stay on the identity-transform path so +GetLastProgramXyz simply returns the previous block's MC.

+

+Full X/Y/Z in Parsing — values are read directly (no +lookback), Parsing.X/Y/Z are consumed, ProgramXyz +section is written; CleanupParsing removes the now-empty +Parsing: +

+#BeforeBuild: +
{ "Parsing": { "X": 10, "Y": 20, "Z": 30 } }
+#AfterBuild: +
{ "ProgramXyz": { "X": 10, "Y": 20, "Z": 30 } }
+Only Z in Parsing with a #Previous: block carrying +MachineCoordinateState=(50,60,70) — under the identity +transform GetLastProgramXyz equals previous MC, so X/Y are +inherited from prev and Z is taken from the parsed literal: +#Previous: +
{ "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 70 } }
+#BeforeBuild: +
{ "Parsing": { "Z": 0 } }
+#AfterBuild: +
{ "ProgramXyz": { "X": 50, "Y": 60, "Z": 0 } }
+Parsing present but with no X/Y/Z (e.g. an unrelated M03 +flag) — ResolveProgramXyz returns null and the syntax +early-returns; the block is unchanged: +#BeforeBuild: +
{ "Parsing": { "Flags": ["M03"] } }
+#AfterBuild: +
{ "Parsing": { "Flags": ["M03"] } }
+

Remarks

The term “Program” is absolute positioning coordinate that can be end-user editing. diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html index d4bc7ad2..9a63fe7f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html @@ -664,8 +664,8 @@ against the spurious-origin case. -

- ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, Sentence, NcDiagnosticProgress) +

+ ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, ISentenceCarrier, NcDiagnosticProgress)

@@ -675,7 +675,7 @@ Fills missing axes from last program position via lookback.

-
public static Vec3d ResolveProgramXyz(JsonNode xyzSource, LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, Sentence sentence, NcDiagnosticProgress diag)
+
public static Vec3d ResolveProgramXyz(JsonNode xyzSource, LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag)

Parameters

@@ -687,8 +687,8 @@ Fills missing axes from last program position via lookback.

syntaxPieceNode LazyLinkedListNode<SyntaxPiece>

Current node for lookback.

-
sentence Sentence
-

Source sentence used to attach diagnostics to the offending text span.

+
sentenceCarrier ISentenceCarrier
+

Carrier used to attach diagnostics to the offending text span.

diag NcDiagnosticProgress

Diagnostic sink that receives parse errors for malformed X/Y/Z values.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html index 47ed6816..5d7d2da8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,20 +97,7 @@ Class ReferenceReturnSyntax
Assembly
HiMech.dll
-

Writes ICompoundMotionDef section for G28 reference point return. -Reads intermediate XYZ from Parsing.G28 -(written by G28Syntax) -and converts to machine coordinates via -ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, Sentence, NcDiagnosticProgress).

-

-Must be placed after LinearMotionSyntax in the syntax chain. -Removes the IMotionEventDef section written by -LinearMotionSyntax (G28 handles its own motion). -Overwrites root MachineCoordinateState -and ProgramXyz with reference position -for subsequent block lookback. -

-
+
@@ -191,28 +178,6 @@ for subsequent block lookback. -

Examples

-

Input: G91 G28 Z0.0 (only Z specified → only Z goes to home)

-
"CompoundMotion": {
-  "Term": "G28",
-  "Items": [
-    {
-      "ProgramXyz": { "X": prevX, "Y": prevY, "Z": intermediate },
-      "Motion": { "Form": "McLinear", "IsRapid": true }
-    },
-    {
-      "MachineCoordinate": { "X": prevMcX, "Y": prevMcY, "Z": 0 },
-      "Motion": { "Form": "McLinear", "IsRapid": true }
-    }
-  ]
-}
-

Only axes present in the G28 block move to home; others keep previous MC value. -Item 0 uses ProgramXyz (intermediate point from NC program); -McXyzSyntax derives its MachineCoordinate. -Item 1 uses MachineCoordinate directly (selective home per axis). -Root ProgramXyz is overwritten to the final position; -McXyzSyntax derives the root MachineCoordinate.

- @@ -227,7 +192,8 @@ Root ProgramXyz is overwritten to the final position; -

Initializes a new instance with default settings.

+

Initializes a new instance with default settings +(BareG28 = Alarm).

@@ -284,6 +250,39 @@ Root ProgramXyz is overwritten to the final position; + + +

+ BareG28 + +

+ +

Behaviour for a G28 block with no axis specifiers. +Defaults to Alarm.

+
+
+ +
+
public BareG28Behavior BareG28 { get; set; }
+
+ + + + + +

Property Value

+
+
BareG28Behavior
+
+
+ + + + + + + +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html index 9097a181..4df319e3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html @@ -158,8 +158,8 @@ and other syntaxes that read or write rotary axis values.

-

- ConsumeAxis(JsonObject, string, Sentence, NcDiagnosticProgress) +

+ ConsumeAxis(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress)

@@ -170,7 +170,7 @@ Returns the value and removes the key, or null if not present.

A non-numeric value (e.g. "#124" left by the parser stage) raises VariableExpression--Unevaluated via -GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) instead of silently dropping +GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) instead of silently dropping the post-processor hint. The key is consumed regardless so downstream syntaxes do not re-process it.

@@ -178,7 +178,7 @@ syntaxes do not re-process it.
-
public static double? ConsumeAxis(JsonObject parsing, string axisName, Sentence sentence, NcDiagnosticProgress diag)
+
public static double? ConsumeAxis(JsonObject parsing, string axisName, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag)

Parameters

@@ -187,7 +187,7 @@ syntaxes do not re-process it.
axisName string
-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
diag NcDiagnosticProgress
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html index 8c7c4165..b3ab5906 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html @@ -183,6 +183,80 @@ composes into Examples +

Unlike IsoCoordinateOffsetSyntax (Fanuc/ISO), this +Siemens variant does not consume the coordinate flag from +Parsing.Flags — the flag stays for downstream syntaxes / +reconstruction. Mat4d arrays are 16 plain doubles in +column-major order; pure translation by (tx,ty,tz) is +[1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1].

+

+G54 with an IsoCoordinateTable +providing G54 → (10, 20, -100) — same shape as +IsoCoordinateOffsetSyntax but the G54 flag +survives: +

+#BeforeBuild: +
{ "Parsing": { "Flags": ["G54"] } }
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["G54"] },
+  "CoordinateOffset": {
+    "CoordinateId": "G54",
+    "Offset_X": 10, "Offset_Y": 20, "Offset_Z": -100
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,-100,1]
+    }
+  ]
+}
+Siemens-extended G505 with a table entry for the same id — +proves the syntax recognises the extended series, not only the +ISO-compat G54–G57 subset: +#BeforeBuild: +
{ "Parsing": { "Flags": ["G505"] } }
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["G505"] },
+  "CoordinateOffset": {
+    "CoordinateId": "G505",
+    "Offset_X": 100, "Offset_Y": 50, "Offset_Z": -200
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,50,-200,1]
+    }
+  ]
+}
+G500 cancel with no IIsoCoordinateConfig on +the dep list — falls back to Vec3d.Zero; the resolved +offset is zero and the composed translation is identity (matching +the special case inside +GetCoordinateOffset(string) +for G500): +#BeforeBuild: +
{ "Parsing": { "Flags": ["G500"] } }
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["G500"] },
+  "CoordinateOffset": {
+    "CoordinateId": "G500",
+    "Offset_X": 0, "Offset_Y": 0, "Offset_Z": 0
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "CoordinateOffset",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html index 3058363e..e9960a9b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html @@ -184,6 +184,31 @@ Direction is converted from ISO M-codes to the conventional +

Examples

+

New S + M03 (CW) — both consumed; SpindleSpeed section +written with the converted direction enum string: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M03"], "S": 2000 } }
+

#AfterBuild:

+
{ "SpindleSpeed": { "SpindleSpeed_rpm": 2000, "Direction": "CW" } }
+

M04 (CCW) only — RPM inherited from #Previous:; direction +updated to the new CCW state: +#Previous:

+
{ "SpindleSpeed": { "SpindleSpeed_rpm": 1500, "Direction": "CW" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M04"] } }
+

#AfterBuild:

+
{ "SpindleSpeed": { "SpindleSpeed_rpm": 1500, "Direction": "CCW" } }
+

M05 (STOP) only — RPM still carried from #Previous: for +bidirectional round-tripping; downstream consumers gate on +Direction == STOP rather than RPM == 0: +#Previous:

+
{ "SpindleSpeed": { "SpindleSpeed_rpm": 1500, "Direction": "CW" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M05"] } }
+

#AfterBuild:

+
{ "SpindleSpeed": { "SpindleSpeed_rpm": 1500, "Direction": "STOP" } }
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html index 0cc8bb55..d8213a5d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html @@ -186,6 +186,32 @@ the tool-change M code); modal-only blocks omit it.

+

Examples

+

T5 + M06 — full tool change on one block; both T and M06 flag +consumed, Term written: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M06"], "T": 5 } }
+

#AfterBuild:

+
{ "ToolChange": { "ToolId": 5, "IsChange": true, "Term": "M06" } }
+

T5 alone alongside an unrelated flag — modal arming only, no actual +change; IsChange=false and Term omitted. M03 is left in +place because CleanupParsing only runs on the M06 branch: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M03"], "T": 7 } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "ToolChange": { "ToolId": 7, "IsChange": false }
+}
+

M06 alone — T comes from #Previous: modal lookback; +IsChange=true, Term=“M06”: +#Previous:

+
{ "ToolChange": { "ToolId": 5, "IsChange": false } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M06"] } }
+

#AfterBuild:

+
{ "ToolChange": { "ToolId": 5, "IsChange": true, "Term": "M06" } }
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html index 3ee14d83..e70bb200 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html @@ -185,6 +185,97 @@ syntaxes (e.g., Examples +

All cases below have no ToolOrientation section and no +TiltTransform entry in the chain — the composed translation +therefore lies along UnitZ (the identity tilt's +AxialNormal), so Mat4d.Trans = (0, 0, height_mm).

+

+G43 H1 with a TestDeps.ToolOffset mapping offset 1 to 99.98 +mm — full consume from Parsing.G43, positive sign on G43: +

+#BeforeBuild: +
{ "Parsing": { "G43": { "H": "1" } } }
+#AfterBuild: +
{
+  "ToolHeightCompensation": {
+    "Offset_mm": 99.98, "Term": "G43", "OffsetId": 1
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,99.98,1]
+    }
+  ]
+}
+G49 cancel flag — writes a sentinel G49 section with +Offset_mm = 0, OffsetId = 0, and composes an identity +Mat4d so any previously composed tool-height translation is reset: +#BeforeBuild: +
{ "Parsing": { "Flags": ["G49"] } }
+#AfterBuild: +
{
+  "ToolHeightCompensation": {
+    "Offset_mm": 0, "Term": "G49", "OffsetId": 0
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+No G43/G44/G49 on the current block but #Previous: carries +an active G43 H1 — modal lookback inherits the term + offset id, +re-queries the tool table, and re-composes the translation. The +unrelated M03 flag survives because the consume path only triggers +when an ISO term is on the current block: +#Previous: +
{
+  "ToolHeightCompensation": {
+    "Offset_mm": 99.98, "Term": "G43", "OffsetId": 1
+  }
+}
+#BeforeBuild: +
{ "Parsing": { "Flags": ["M03"] } }
+#AfterBuild: +
{
+  "Parsing": { "Flags": ["M03"] },
+  "ToolHeightCompensation": {
+    "Offset_mm": 99.98, "Term": "G43", "OffsetId": 1
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,99.98,1]
+    }
+  ]
+}
+G44 H1 with the same TestDeps.ToolOffset offset-1 → +99.98 mm — G44 negates the table value, so +Offset_mm = -99.98 and the composed translation lies along +-UnitZ. The X/Y components of toolOrientation * -99.98 +land on IEEE-754 negative zero (0 * -99.98 = -0.0), which +System.Text.Json emits literally as -0: +#BeforeBuild: +
{ "Parsing": { "G44": { "H": "1" } } }
+#AfterBuild: +
{
+  "ToolHeightCompensation": {
+    "Offset_mm": -99.98, "Term": "G44", "OffsetId": 1
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, -0,-0,-99.98,1]
+    }
+  ]
+}
+

Remarks

Input data locations in JsonObject:

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html index b60d794f..824b9cde 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html @@ -191,6 +191,25 @@ the default. +

Examples

+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G21"] } }
+

#AfterBuild:

+
{ "Unit": { "Term": "G21", "System": "Metric" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G20"] } }
+

#AfterBuild:

+
{ "Unit": { "Term": "G20", "System": "Inch" } }
+

#Previous:

+
{ "Unit": { "Term": "G21", "System": "Metric" } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M03"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["M03"] },
+  "Unit": { "Term": "G21", "System": "Metric" }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html index d241f8e0..8fbe04bb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html @@ -449,6 +449,18 @@ Uses MachineCoordinateState need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList.

+

+Two stages, mirroring McXyzSyntax: +

  1. Root MachineCoordinateState — anchored at the previous + block's modal rotary state.
  2. CompoundMotion.ItemsKey[*] + — sequential walk through items, anchoring item 0 at the previous + block's modal state and item i > 0 at item i-1's + post-cycle value (per-axis chain). Items without a rotary + MachineCoordinateState are skipped.
+The items pass enables rotary motion (e.g. G28 ABC intermediate / +home stages) to surface as motion IAct +segments rather than a single root-MC stamp. +
@@ -665,6 +677,15 @@ Local variables (#1-#33, scope: macro call frame) are also untouched here; their lifecycle belongs to G65/G66/M99 push/pop, not program end.

+

+Also clears any active FanucModalMacro on the same +edge: a G66 modal that was still active when M02/M30 hit is +implicitly cancelled, matching real Fanuc reset behaviour. The +section is overwritten with a G67-shaped cancel marker so +the carry mechanism in +FanucModalMacroSyntax sees the boundary +and does not propagate the modal past the program-end edge. +

@@ -777,20 +798,7 @@ MC vs predecessor lookback, picks strategy from
ReferenceReturnSyntax
-

Writes ICompoundMotionDef section for G28 reference point return. -Reads intermediate XYZ from Parsing.G28 -(written by G28Syntax) -and converts to machine coordinates via -ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, Sentence, NcDiagnosticProgress).

-

-Must be placed after LinearMotionSyntax in the syntax chain. -Removes the IMotionEventDef section written by -LinearMotionSyntax (G28 handles its own motion). -Overwrites root MachineCoordinateState -and ProgramXyz with reference position -for subsequent block lookback. -

-
+
RotaryAxisUtil
@@ -876,6 +884,26 @@ are forced to pre-convert the NC program to metric. G21 is accepted as a no-op confirmation of the default.

+ +
+

+Enums +

+
+
BareG28Behavior
+

Writes ICompoundMotionDef section for G28 reference point return. +Reads intermediate XYZ from Parsing.G28 +(written by G28Syntax) +and converts to machine coordinates via +ResolveProgramXyz(JsonNode, LazyLinkedListNode<SyntaxPiece>, ISentenceCarrier, NcDiagnosticProgress).

+

+Must be placed after LinearMotionSyntax in the syntax chain. +Removes the IMotionEventDef section written by +LinearMotionSyntax (G28 handles its own motion). +Overwrites root MachineCoordinateState +and ProgramXyz with reference position +for subsequent block lookback. +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnostic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnostic.html index 92aeba3f..0595efef 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnostic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnostic.html @@ -183,8 +183,8 @@ For irregular cases that don't fit the pattern, use a custom string. -

- NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, Sentence) +

+ NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, ISentenceCarrier)

@@ -193,7 +193,7 @@ For irregular cases that don't fit the pattern, use a custom string.
-
public NcDiagnostic(NcDiagnosticSeverity severity, NcDiagnosticCategory category, string id, string text, object detail = null, Sentence sentence = null)
+
public NcDiagnostic(NcDiagnosticSeverity severity, NcDiagnosticCategory category, string id, string text, object detail = null, ISentenceCarrier sentenceCarrier = null)

Parameters

@@ -213,8 +213,8 @@ For irregular cases that don't fit the pattern, use a custom string.
detail object

Optional detail data or exception. Null if not applicable.

-
sentence Sentence
-

The NC source block that triggered this diagnostic; null for pipeline-level messages.

+
sentenceCarrier ISentenceCarrier
+

Carrier for the NC source block that triggered this diagnostic; null for pipeline-level messages.

@@ -330,20 +330,23 @@ Normally {Primary}-{Secondary}–{Serial:000}.

- + -

- Sentence +

+ SentenceCarrier

-

The NC source block that triggered this diagnostic. -Null for pipeline-level messages (e.g., lifecycle start/done).

+

Carrier of the NC source block that triggered this diagnostic, exposing +both the source Sentence (via +GetSentence()) and the execution-order +SentenceIndex. Null for pipeline-level +messages (e.g., lifecycle start/done) that have no source block.

-
public Sentence Sentence { get; }
+
public ISentenceCarrier SentenceCarrier { get; }
@@ -352,7 +355,7 @@ Null for pipeline-level messages (e.g., lifecycle start/done).

Property Value

-
Sentence
+
ISentenceCarrier
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html index 7a8b608b..353b25d9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html @@ -228,22 +228,22 @@ reported NcDiagnostic -

- ConfigurationError(Sentence, string, string, object) +

+ ConfigurationError(ISentenceCarrier, string, string, object)

-

Emits Configuration + Error located at sentence.

+

Emits Configuration + Error located at sentenceCarrier.

-
public void ConfigurationError(Sentence sentence, string id, string text, object detail = null)
+
public void ConfigurationError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -302,22 +302,22 @@ reported NcDiagnostic -

- ConfigurationMessage(Sentence, string, string) +

+ ConfigurationMessage(ISentenceCarrier, string, string)

-

Emits Configuration + Message located at sentence.

+

Emits Configuration + Message located at sentenceCarrier.

-
public void ConfigurationMessage(Sentence sentence, string id, string text)
+
public void ConfigurationMessage(ISentenceCarrier sentenceCarrier, string id, string text)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -372,22 +372,22 @@ reported NcDiagnostic -

- ConfigurationWarning(Sentence, string, string, object) +

+ ConfigurationWarning(ISentenceCarrier, string, string, object)

-

Emits Configuration + Warning located at sentence.

+

Emits Configuration + Warning located at sentenceCarrier.

-
public void ConfigurationWarning(Sentence sentence, string id, string text, object detail = null)
+
public void ConfigurationWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -479,22 +479,22 @@ reported NcDiagnostic -

- SystemError(Sentence, string, string, object) +

+ SystemError(ISentenceCarrier, string, string, object)

-

Emits System + Error located at sentence.

+

Emits System + Error located at sentenceCarrier.

-
public void SystemError(Sentence sentence, string id, string text, object detail = null)
+
public void SystemError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -553,22 +553,22 @@ reported NcDiagnostic -

- SystemMessage(Sentence, string, string) +

+ SystemMessage(ISentenceCarrier, string, string)

-

Emits System + Message located at sentence.

+

Emits System + Message located at sentenceCarrier.

-
public void SystemMessage(Sentence sentence, string id, string text)
+
public void SystemMessage(ISentenceCarrier sentenceCarrier, string id, string text)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -623,22 +623,22 @@ reported NcDiagnostic -

- UnsupportedError(Sentence, string, string, object) +

+ UnsupportedError(ISentenceCarrier, string, string, object)

-

Emits Unsupported + Error located at sentence.

+

Emits Unsupported + Error located at sentenceCarrier.

-
public void UnsupportedError(Sentence sentence, string id, string text, object detail = null)
+
public void UnsupportedError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -697,22 +697,22 @@ reported NcDiagnostic -

- UnsupportedMessage(Sentence, string, string, object) +

+ UnsupportedMessage(ISentenceCarrier, string, string, object)

-

Emits Unsupported + Message located at sentence.

+

Emits Unsupported + Message located at sentenceCarrier.

-
public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null)
+
public void UnsupportedMessage(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -771,22 +771,22 @@ reported NcDiagnostic -

- UnsupportedWarning(Sentence, string, string, object) +

+ UnsupportedWarning(ISentenceCarrier, string, string, object)

-

Emits Unsupported + Warning located at sentence.

+

Emits Unsupported + Warning located at sentenceCarrier.

-
public void UnsupportedWarning(Sentence sentence, string id, string text, object detail = null)
+
public void UnsupportedWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -845,22 +845,22 @@ reported NcDiagnostic -

- ValidationError(Sentence, string, string, object) +

+ ValidationError(ISentenceCarrier, string, string, object)

-

Emits Validation + Error located at sentence.

+

Emits Validation + Error located at sentenceCarrier.

-
public void ValidationError(Sentence sentence, string id, string text, object detail = null)
+
public void ValidationError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
@@ -919,22 +919,22 @@ reported NcDiagnostic -

- ValidationWarning(Sentence, string, string, object) +

+ ValidationWarning(ISentenceCarrier, string, string, object)

-

Emits Validation + Warning located at sentence.

+

Emits Validation + Warning located at sentenceCarrier.

-
public void ValidationWarning(Sentence sentence, string id, string text, object detail = null)
+
public void ValidationWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null)

Parameters

-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
id string
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html index cdb79d7a..7dfcea80 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html @@ -195,6 +195,20 @@ regardless of the skip switch.
+

Examples

+

#BeforeBuild.UnparsedText: /X100 Y200 +#AfterBuild:

+
{
+  "UnparsedText": "X100 Y200",
+  "BlockSkip": { "Symbol": "/", "Layer": 1 }
+}
+

#BeforeBuild.UnparsedText: /3 G01 X0 +#AfterBuild:

+
{
+  "UnparsedText": "G01 X0",
+  "BlockSkip": { "Symbol": "/", "Layer": 3 }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html index f0fce607..20cf7a6d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html @@ -181,6 +181,19 @@ the () symbol.

+

Examples

+

#BeforeBuild.UnparsedText: (only a comment) +#AfterBuild:

+
{
+  "Comment": { "Symbol": "()", "Text": "only a comment" }
+}
+

#BeforeBuild.UnparsedText: G01 X100 (mid-line comment) +#AfterBuild:

+
{
+  "UnparsedText": "G01 X100",
+  "Comment": { "Symbol": "()", "Text": "mid-line comment" }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html index fdc15e0d..e3eed5c6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html @@ -180,6 +180,19 @@ Class TailCommentSyntax
+

Examples

+

#BeforeBuild.UnparsedText: ;header comment (with TailSymbol=";") +#AfterBuild:

+
{
+  "Comment": { "Symbol": ";", "Text": "header comment" }
+}
+

#BeforeBuild.UnparsedText: G01 X100 ;mid comment (with TailSymbol=";") +#AfterBuild:

+
{
+  "UnparsedText": "G01 X100",
+  "Comment": { "Symbol": ";", "Text": "mid comment" }
+}
+ @@ -328,7 +341,7 @@ Class TailCommentSyntax -

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html index dabe9e18..dba8dbef 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html @@ -422,7 +422,7 @@ The symbols are configurable and serialized to XML.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html new file mode 100644 index 00000000..a1daec12 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html @@ -0,0 +1,495 @@ + + + + + Class FanucGotoParsingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucGotoParsingSyntax +

+ +
+
Namespace
Hi.NcParsers.ParsingSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Parses Fanuc Custom Macro B GOTO phrases out of the remaining +UnparsedText into a Parsing.FanucGoto +sub-object. Two forms are recognised:

+
  • GOTO <n> — unconditional jump.
  • IF [<bool-expr>] GOTO <n> — conditional jump.
+

+IF [...] GOTO is matched as a single phrase, not as an IF +syntax composed with a GOTO syntax — Fanuc only permits the two +fixed forms (the other being IF [...] THEN <assignment>, +out of scope here), so a phrase-level parser is more faithful and +avoids parsing-ambiguity rabbit holes. +

+

+<n> is captured as a raw token (literal like "100", +variable like "#1", or bracketed expression like +"#[#2+5]"). VariableEvaluatorSyntax +substitutes the resolved literal back into the same field downstream; +FanucGotoSyntax then parses the final +string as an int. Storing as a string at parsing time mirrors how axis +tags and canned-cycle params accept #N references and the +evaluator rewrites them in place. +

+

+Pipeline placement: after HeadIndexSyntax (so the leading +N{seq} on a block like N50 GOTO 100 has already been +consumed) and after QuoteCommentSyntax +(so a parenthesised (GOTO 100) inside a comment never matches). +The phrase consumes the entire remaining text on the block — Fanuc +allows only the GOTO / IF-GOTO phrase after any preceding head index, +no other instructions on the same block. +

+
+
+ +
+
public class FanucGotoParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucGotoParsingSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

#BeforeBuild.UnparsedText: GOTO 100 +#AfterBuild:

+
{
+  "Parsing": {
+    "FanucGoto": {
+      "Term": "GOTO",
+      "N": "100"
+    }
+  }
+}
+

#BeforeBuild.UnparsedText: GOTO #1 +#AfterBuild:

+
{
+  "Parsing": {
+    "FanucGoto": {
+      "Term": "GOTO",
+      "N": "#1"
+    }
+  }
+}
+

#BeforeBuild.UnparsedText: IF [#1 GT 0] GOTO 100 +#AfterBuild:

+
{
+  "Parsing": {
+    "FanucGoto": {
+      "Term": "IF...GOTO",
+      "N": "100",
+      "Condition": "#1 GT 0"
+    }
+  }
+}
+ + + + +

Constructors +

+ + + + +

+ FanucGotoParsingSyntax() + +

+ +

Parameterless instance for bundle composition (no XML state).

+
+
+ +
+
public FanucGotoParsingSyntax()
+
+ + + + + + + + + + + + + + + +

+ FanucGotoParsingSyntax(XElement) + +

+ +

XML ctor (no child elements; reserved for forward compatibility).

+
+
+ +
+
public FanucGotoParsingSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

+
+
+ +
+
public string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this syntax with XFactory.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

+ +

Build syntax arrangement into the +syntaxPieceNode in-place.

+
+
+ +
+
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+ +

Parameters

+
+
syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+
ncDependencyList List<INcDependency>
+
+
ncDiagnosticProgress NcDiagnosticProgress
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html new file mode 100644 index 00000000..ad8e7885 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html @@ -0,0 +1,485 @@ + + + + + Class FanucIfThenParsingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FanucIfThenParsingSyntax +

+ +
+
Namespace
Hi.NcParsers.ParsingSyntaxs.Fanuc
+
Assembly
HiMech.dll
+
+ +

Parses the Fanuc Custom Macro B +IF [<bool-expr>] THEN <body> single-block conditional +phrase out of UnparsedText into a +Parsing.FanucIfThen sub-object. Sibling to +FanucGotoParsingSyntax — Fanuc spec only permits two +IF-led control phrases (IF [...] GOTO <n> handled there, +IF [...] THEN <stmt> handled here) so each form is matched +phrase-level rather than composed from a generic IF combinator.

+

+Body shape. The body after THEN is conceptually a single +statement that affects the current block only — no jump, no label scan. +Almost always a Custom Macro B assignment (#nnn = <expr>); +multiple assignments in the same body +(#100 = 5. #101 = #100 + 1) are also accepted. The parsing +syntax pre-extracts these via +GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>) into +Parsing.FanucIfThen.PendingAssignments as {tag: rhs-string} +entries — that shape lets VariableEvaluatorSyntax's +pass-2 tree walk substitute each RHS to a numeric in place, and lets +FanucIfThenSyntax lift the +resolved entries into Parsing.Assignments only when the gate +condition fires (so unfired bodies leave no trace in the readers). +

+

+Pipeline placement. This syntax must run before +FanucGotoParsingSyntax — the bare IF-GOTO regex over there +(^IF[..]GOTO n$) is anchored, but consuming IF-THEN here first +keeps the two phrases textually disjoint and avoids any future +regression if either regex is loosened. Also placed before +TagAssignmentSyntax so a bare +IF [...] THEN #100 = 5. is not first half-eaten as a plain +assignment. +

+

+Raw BodyText is retained verbatim on the +parsing section regardless of whether the body parsed as assignments — +it carries the round-trip view and lets the evaluation syntax warn +(FanucIfThen--UnsupportedBody) if no PendingAssignments were +produced on a truthy condition. +

+
+
+ +
+
public class FanucIfThenParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucIfThenParsingSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

#Input: IF [#1 GT 0] THEN #100 = #500 + 1 +#Output:

+
{
+  "Parsing": {
+    "FanucIfThen": {
+      "Condition": "#1 GT 0",
+      "BodyText": "#100 = #500 + 1",
+      "PendingAssignments": { "#100": "#500 + 1" }
+    }
+  }
+}
+ + + + +

Constructors +

+ + + + +

+ FanucIfThenParsingSyntax() + +

+ +

Parameterless instance for bundle composition (no XML state).

+
+
+ +
+
public FanucIfThenParsingSyntax()
+
+ + + + + + + + + + + + + + + +

+ FanucIfThenParsingSyntax(XElement) + +

+ +

XML ctor (no child elements; reserved for forward compatibility).

+
+
+ +
+
public FanucIfThenParsingSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
+ + + + + + + + + + + + +

Properties +

+ + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

+
+
+ +
+
public string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this syntax with XFactory.

+
+
+ +
+
public static string XName { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

+ +

Build syntax arrangement into the +syntaxPieceNode in-place.

+
+
+ +
+
public void Build(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
+
+ +

Parameters

+
+
syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+
ncDependencyList List<INcDependency>
+
+
ncDiagnosticProgress NcDiagnosticProgress
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Creates an XML representation of the object. +This method may also generate additional resources such as related files.

+
+
+ +
+
public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
+
+ +

Parameters

+
+
baseDirectory string
+

The base directory for resolving relative paths

+
+
relFile string
+

The relative file path for the XML source

+
+
exhibitionOnly bool
+

if true, the extended file creation is suppressed.

+
+
+ +

Returns

+
+
XElement
+

An XML element representing the object's state

+
+
+ + + + + + + +

Remarks

+

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. +The baseDirectory is typically the folder at the nearest configuration file folder. +Since the folder can be moving with the configuration file.

+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html similarity index 72% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html index 6f46fb93..8762e5ca 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html @@ -84,16 +84,16 @@
-
+

Examples

+

Bare O1234 on the first block of the stream (no +#Previous:) — start-of-stream is itself a tape boundary +per IsPreviousNodeTapeBoundary(LazyLinkedListNode<SyntaxPiece>), so +the syntax fires; the consumed text leaves nothing behind: +#BeforeBuild.UnparsedText: O1234 +#AfterBuild:

+
{ "FanucProgramNumber": { "Number": "1234", "Wrapper": "None" } }
+

Angle-bracketed <O5678> after an explicit +TapeBoundary block (% on the prior line) — +Wrapper records the surface form: +#Previous:

+
{ "TapeBoundary": { "Text": "" } }
+

#BeforeBuild.UnparsedText: <O5678> +#AfterBuild:

+
{ "FanucProgramNumber": { "Number": "5678", "Wrapper": "Angle" } }
+

O1234 followed by trailing text (e.g. an inline comment) — +only the program-number header is consumed; the rest stays on +UnparsedText for downstream syntaxes to handle: +#Previous:

+
{ "TapeBoundary": { "Text": "" } }
+

#BeforeBuild.UnparsedText: O1234 (PART-A) +#AfterBuild:

+
{
+  "UnparsedText": "(PART-A)",
+  "FanucProgramNumber": { "Number": "1234", "Wrapper": "None" }
+}
+

Previous block is not a tape boundary (e.g. ordinary +FanucProgramNumber already in the stream) — the +guard rejects the block, leaving UnparsedText intact: +#Previous:

+
{ "FanucProgramNumber": { "Number": "1000", "Wrapper": "None" } }
+

#BeforeBuild.UnparsedText: O9999 +#AfterBuild:

+
{ "UnparsedText": "O9999" }
+ @@ -191,9 +227,9 @@ back to its original notation.

- + -

+

FanucProgramNumberSyntax()

@@ -218,9 +254,9 @@ back to its original notation.

- + -

+

FanucProgramNumberSyntax(XElement)

@@ -236,7 +272,7 @@ back to its original notation.

Parameters

src XElement
-

Root element named XName.

+

Root element named XName.

@@ -255,9 +291,9 @@ back to its original notation.

- + -

+

Name

@@ -287,14 +323,14 @@ back to its original notation.

- + -

+

XName

-

XML element name for Regs registration.

+

XML element name for Generators registration.

@@ -323,9 +359,9 @@ back to its original notation.

- + -

+

Build(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)

@@ -360,9 +396,9 @@ back to its original notation.

- + -

+

MakeXmlSource(string, string, bool)

@@ -402,7 +438,7 @@ This method may also generate additional resources such as related files.

-

Remarks

+

Remarks

For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html new file mode 100644 index 00000000..fdf733a0 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html @@ -0,0 +1,210 @@ + + + + + Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ +

Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc

+
+
+
+ +

+Classes +

+
+
FanucGotoParsingSyntax
+

Parses Fanuc Custom Macro B GOTO phrases out of the remaining +UnparsedText into a Parsing.FanucGoto +sub-object. Two forms are recognised:

+
  • GOTO <n> — unconditional jump.
  • IF [<bool-expr>] GOTO <n> — conditional jump.
+

+IF [...] GOTO is matched as a single phrase, not as an IF +syntax composed with a GOTO syntax — Fanuc only permits the two +fixed forms (the other being IF [...] THEN <assignment>, +out of scope here), so a phrase-level parser is more faithful and +avoids parsing-ambiguity rabbit holes. +

+

+<n> is captured as a raw token (literal like "100", +variable like "#1", or bracketed expression like +"#[#2+5]"). VariableEvaluatorSyntax +substitutes the resolved literal back into the same field downstream; +FanucGotoSyntax then parses the final +string as an int. Storing as a string at parsing time mirrors how axis +tags and canned-cycle params accept #N references and the +evaluator rewrites them in place. +

+

+Pipeline placement: after HeadIndexSyntax (so the leading +N{seq} on a block like N50 GOTO 100 has already been +consumed) and after QuoteCommentSyntax +(so a parenthesised (GOTO 100) inside a comment never matches). +The phrase consumes the entire remaining text on the block — Fanuc +allows only the GOTO / IF-GOTO phrase after any preceding head index, +no other instructions on the same block. +

+
+
+
+
FanucIfThenParsingSyntax
+

Parses the Fanuc Custom Macro B +IF [<bool-expr>] THEN <body> single-block conditional +phrase out of UnparsedText into a +Parsing.FanucIfThen sub-object. Sibling to +FanucGotoParsingSyntax — Fanuc spec only permits two +IF-led control phrases (IF [...] GOTO <n> handled there, +IF [...] THEN <stmt> handled here) so each form is matched +phrase-level rather than composed from a generic IF combinator.

+

+Body shape. The body after THEN is conceptually a single +statement that affects the current block only — no jump, no label scan. +Almost always a Custom Macro B assignment (#nnn = <expr>); +multiple assignments in the same body +(#100 = 5. #101 = #100 + 1) are also accepted. The parsing +syntax pre-extracts these via +GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>) into +Parsing.FanucIfThen.PendingAssignments as {tag: rhs-string} +entries — that shape lets VariableEvaluatorSyntax's +pass-2 tree walk substitute each RHS to a numeric in place, and lets +FanucIfThenSyntax lift the +resolved entries into Parsing.Assignments only when the gate +condition fires (so unfired bodies leave no trace in the readers). +

+

+Pipeline placement. This syntax must run before +FanucGotoParsingSyntax — the bare IF-GOTO regex over there +(^IF[..]GOTO n$) is anchored, but consuming IF-THEN here first +keeps the two phrases textually disjoint and avoids any future +regression if either regex is loosened. Also placed before +TagAssignmentSyntax so a bare +IF [...] THEN #100 = 5. is not first half-eaten as a plain +assignment. +

+

+Raw BodyText is retained verbatim on the +parsing section regardless of whether the body parsed as assignments — +it carries the round-trip view and lets the evaluation syntax warn +(FanucIfThen--UnsupportedBody) if no PendingAssignments were +produced on a truthy condition. +

+
+
+
+
FanucProgramNumberSyntax
+

Detects a Fanuc-family program identifier header — O1234 or +<O1234> — that follows a TapeBoundary +line, and records it under FanucProgramNumber on the +block JSON. The wrapping form (bare vs angle-bracketed) is preserved +in Wrapper so the block can be emitted +back to its original notation.

+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html index 490b061c..1a95099f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html @@ -364,7 +364,7 @@ The term Tag generally accomanys with variable value.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html index 21caf42c..bdc40b4e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html @@ -179,6 +179,19 @@ Class HeadIndexSyntax
+

Examples

+

#BeforeBuild.UnparsedText: N100 X0 (with HeadSymbol=“N”) +#AfterBuild:

+
{
+  "UnparsedText": "X0",
+  "IndexNote": { "Symbol": "N", "Number": 100 }
+}
+

#BeforeBuild.UnparsedText: N42 (lone head index, no trailing tokens; with HeadSymbol=“N”) +#AfterBuild:

+
{
+  "IndexNote": { "Symbol": "N", "Number": 42 }
+}
+ @@ -329,7 +342,7 @@ NC Index from Heidenhain may have no head symbol.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html index 0956c00c..c8f4870b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html @@ -180,35 +180,34 @@ Class HeidenhainBlkFormSyntax

Examples

-

Input: BLK FORM 0.1 Z X+0 Y+0 Z-40 -Output:

+

#BeforeBuild.UnparsedText: BLK FORM 0.1 Z X+0 Y+0 Z-40 +#AfterBuild:

{
-  "BLK FORM": {
-    "Type": "0.1",
-    "Axis": "Z",
-    "X": "+0",
-    "Y": "+0",
-    "Z": "-40"
+  "Parsing": {
+    "BLK FORM": {
+      "Type": "0.1", "Axis": "Z",
+      "X": 0, "Y": 0, "Z": -40
+    }
   }
 }
-

Input: BLK FORM 0.2 X+100 Y+100 Z+0 -Output:

+

#BeforeBuild.UnparsedText: BLK FORM 0.2 X+100 Y+100 Z+0 +#AfterBuild:

{
-  "BLK FORM": {
-    "Type": "0.2",
-    "X": "+100",
-    "Y": "+100",
-    "Z": "+0"
+  "Parsing": {
+    "BLK FORM": {
+      "Type": "0.2",
+      "X": 100, "Y": 100, "Z": 0
+    }
   }
 }
-

Input: BLK FORM CYLINDER Z R50 L105 -Output:

+

#BeforeBuild.UnparsedText: BLK FORM CYLINDER Z R50 L105 +#AfterBuild:

{
-  "BLK FORM": {
-    "Type": "CYLINDER",
-    "Axis": "Z",
-    "R": "50",
-    "L": "105"
+  "Parsing": {
+    "BLK FORM": {
+      "Type": "CYLINDER", "Axis": "Z",
+      "R": 50, "L": 105
+    }
   }
 }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html index e921baf3..a6207a22 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html @@ -180,29 +180,25 @@ Class HeidenhainCallSyntax

Examples

-

Input: CALL PGM SubProg -Output:

+

#BeforeBuild.UnparsedText: CALL PGM SubProg +#AfterBuild:

{
-  "CALL": {
-    "Target": "PGM",
-    "Name": "SubProg"
+  "Parsing": {
+    "CALL": { "Target": "PGM", "Name": "SubProg" }
   }
 }
-

Input: CALL LBL 5 -Output:

+

#BeforeBuild.UnparsedText: CALL LBL 5 +#AfterBuild:

{
-  "CALL": {
-    "Target": "LBL",
-    "Name": "5"
+  "Parsing": {
+    "CALL": { "Target": "LBL", "Name": "5" }
   }
 }
-

Input: CALL LBL MyLabel REP 3 -Output:

+

#BeforeBuild.UnparsedText: CALL LBL MyLabel REP 3 +#AfterBuild:

{
-  "CALL": {
-    "Target": "LBL",
-    "Name": "MyLabel",
-    "REP": "3"
+  "Parsing": {
+    "CALL": { "Target": "LBL", "Name": "MyLabel", "REP": "3" }
   }
 }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html index c3eb0814..1e47b95c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,11 @@ Class HeidenhainLSyntax
Assembly
HiMech.dll
-

Heidenhain linear movement (the leading L) syntax.

+

Heidenhain linear movement (the leading L) syntax. Strips the leading +L and grabs axis-tag values for any of +AxisTagList (X, Y, Z, U, V, W, A, B, C) that +appear afterwards as {axis}{signed-value} pairs; values are +parsed as floats via ToFloat(string).

@@ -179,6 +183,22 @@ Class HeidenhainLSyntax
+

Examples

+

#BeforeBuild.UnparsedText: L X+10 Y+20 Z-5 +#AfterBuild:

+
{
+  "Parsing": {
+    "L": { "X": 10, "Y": 20, "Z": -5 }
+  }
+}
+

#BeforeBuild.UnparsedText: L A+45 B-15 +#AfterBuild:

+
{
+  "Parsing": {
+    "L": { "A": 45, "B": -15 }
+  }
+}
+ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html index 26ff1ecb..5f28c91c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html @@ -182,25 +182,25 @@ LBL 0 is reserved for end of subprogram.

Examples

-

Input: LBL 1 -Output:

+

#BeforeBuild.UnparsedText: LBL 1 +#AfterBuild:

{
-  "LBL": {
-    "Name": "1"
+  "Parsing": {
+    "LBL": { "Name": "1" }
   }
 }
-

Input: LBL MyLabel -Output:

+

#BeforeBuild.UnparsedText: LBL MyLabel +#AfterBuild:

{
-  "LBL": {
-    "Name": "MyLabel"
+  "Parsing": {
+    "LBL": { "Name": "MyLabel" }
   }
 }
-

Input: LBL 0 -Output:

+

#BeforeBuild.UnparsedText: LBL 0 (LBL 0 is the end-of-subprogram sentinel) +#AfterBuild:

{
-  "LBL": {
-    "Name": "0"
+  "Parsing": {
+    "LBL": { "Name": "0" }
   }
 }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html index fdd622b0..d8c828ee 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html @@ -186,37 +186,33 @@ Handles:

Examples

-

Input: PLANE SPATIAL SPA+30 SPB+0 SPC-10 SEQ+ COORD ROT TURN -Output:

+

#BeforeBuild.UnparsedText: PLANE SPATIAL SPA+30 SPB+0 SPC-10 SEQ+ COORD ROT TURN +#AfterBuild:

{
-  "PLANE": {
-    "Mode": "SPATIAL",
-    "SPA": "+30",
-    "SPB": "+0",
-    "SPC": "-10",
-    "SEQ": "+",
-    "Rot": "COORD",
-    "Positioning": "TURN"
+  "Parsing": {
+    "PLANE": {
+      "Mode": "SPATIAL",
+      "SPA": 30, "SPB": 0, "SPC": -10,
+      "SEQ": "+", "Rot": "COORD", "Positioning": "TURN"
+    }
   }
 }
-

Input: PLANE PROJECTED PROPR+30 PROMIN+0 ROT+45 SEQ- TABLE ROT MOVE -Output:

+

#BeforeBuild.UnparsedText: PLANE PROJECTED PROPR+30 PROMIN+0 ROT+45 SEQ- TABLE ROT MOVE +#AfterBuild:

{
-  "PLANE": {
-    "Mode": "PROJECTED",
-    "PROPR": "+30",
-    "PROMIN": "+0",
-    "ROT": "+45",
-    "SEQ": "-",
-    "Rot": "TABLE",
-    "Positioning": "MOVE"
+  "Parsing": {
+    "PLANE": {
+      "Mode": "PROJECTED",
+      "PROPR": 30, "PROMIN": 0, "ROT": 45,
+      "SEQ": "-", "Rot": "TABLE", "Positioning": "MOVE"
+    }
   }
 }
-

Input: PLANE RESET -Output:

+

#BeforeBuild.UnparsedText: PLANE RESET +#AfterBuild:

{
-  "PLANE": {
-    "Mode": "RESET"
+  "Parsing": {
+    "PLANE": { "Mode": "RESET" }
   }
 }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html index f664889c..73f66d04 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html @@ -180,22 +180,18 @@ Class HeidenhainProgramSyntax

Examples

-

Input: BEGIN PGM DEMO MM -Output:

+

#BeforeBuild.UnparsedText: BEGIN PGM DEMO MM +#AfterBuild:

{
-  "PGM": {
-    "Command": "BEGIN",
-    "Name": "DEMO",
-    "Unit": "MM"
+  "Parsing": {
+    "PGM": { "Command": "BEGIN", "Name": "DEMO", "Unit": "MM" }
   }
 }
-

Input: END PGM DEMO MM -Output:

+

#BeforeBuild.UnparsedText: END PGM DEMO MM +#AfterBuild:

{
-  "PGM": {
-    "Command": "END",
-    "Name": "DEMO",
-    "Unit": "MM"
+  "Parsing": {
+    "PGM": { "Command": "END", "Name": "DEMO", "Unit": "MM" }
   }
 }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html index cf71b99a..568947c6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html @@ -181,24 +181,18 @@ Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL&helli

Examples

-

Input: TOOL CALL 1 Z S5000 -Output:

+

#BeforeBuild.UnparsedText: TOOL CALL 1 Z S5000 +#AfterBuild:

{
-  "TOOL CALL": {
-    "T": "1",
-    "Axis": "Z",
-    "S": "5000"
+  "Parsing": {
+    "TOOL CALL": { "Axis": "Z", "S": "5000", "T": "1" }
   }
 }
-

Input: TOOL CALL “MyTool” Z S3000 DL+0.5 DR-0.1 -Output:

+

#BeforeBuild.UnparsedText: TOOL CALL “MyTool” Z S3000 DL+0.5 DR-0.1 +#AfterBuild:

{
-  "TOOL CALL": {
-    "T": "MyTool",
-    "Axis": "Z",
-    "S": "3000",
-    "DL": "+0.5",
-    "DR": "-0.1"
+  "Parsing": {
+    "TOOL CALL": { "Axis": "Z", "S": "3000", "DL": "+0.5", "DR": "-0.1", "T": "MyTool" }
   }
 }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html index aa668814..d20402a5 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html @@ -117,7 +117,11 @@ Extends
HeidenhainLSyntax
-

Heidenhain linear movement (the leading L) syntax.

+

Heidenhain linear movement (the leading L) syntax. Strips the leading +L and grabs axis-tag values for any of +AxisTagList (X, Y, Z, U, V, W, A, B, C) that +appear afterwards as {axis}{signed-value} pairs; values are +parsed as floats via ToFloat(string).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html index a59f1722..a0619a12 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html @@ -413,7 +413,7 @@ Note: Parameters like P2 in G54.1P2 should be handled by TagSetupSyntax separate -

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html index 12a78188..2fef1d8c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html @@ -549,7 +549,7 @@ Extraction stops when encountering these prefixes followed by a number.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html index 8f8aa623..98dc16e7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html @@ -303,7 +303,7 @@ This syntax is only needed for legacy “conventional type” configurat -

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html index ebcc6dc0..f46b9eb7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html @@ -183,6 +183,23 @@ separate concern handled by its own brand-specific syntax.

+

Examples

+

#BeforeBuild.UnparsedText: % +#AfterBuild:

+
{
+  "TapeBoundary": { "Text": "" }
+}
+

#BeforeBuild.UnparsedText: %foo +#AfterBuild:

+
{
+  "TapeBoundary": { "Text": "foo" }
+}
+

#BeforeBuild.UnparsedText: % header text +#AfterBuild:

+
{
+  "TapeBoundary": { "Text": "header text" }
+}
+ @@ -293,7 +310,7 @@ separate concern handled by its own brand-specific syntax.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html index 736623b7..406d8526 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html @@ -121,16 +121,6 @@ regardless of the skip switch. PreMarker marks a script that runs before the NC block; PostMarker marks a script that runs after. The symbols are configurable and serialized to XML.

- -
-
-
FanucProgramNumberSyntax
-

Detects a Fanuc-family program identifier header — O1234 or -<O1234> — that follows a TapeBoundary -line, and records it under FanucProgramNumber on the -block JSON. The wrapping form (bare vs angle-bracketed) is preserved -in Wrapper so the block can be emitted -back to its original notation.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html index 409dfddc..17731654 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html @@ -6,7 +6,7 @@ - + @@ -106,6 +106,28 @@ inside the cloned section. Lets every block stand alone with its full modal context, so downstream readers (cache-file dumps, semantics, UI jumping to a single block) do not need EnumerateBack() to resolve modal state.

+

+A JSON section is a candidate for TrackedKeys when ALL +four criteria hold: +

  1. Writers concentrated — one or two syntaxes own the + section (e.g. LinearMotionSyntax / + CircularMotionSyntax own + MotionState; the call/return pair own + SubProgramCall-derived state).
  2. Readers distributed — multiple downstream consumers + each need the value, and none of them should walk back to find it. + Single-reader sections do not benefit from blanket carry.
  3. Every block must see the section — cache-dump readers + landing randomly, single-block UI views, and look-ahead syntaxes + all require the section to be present on every block.
  4. Carry is unconditional — no frame-gating or other + per-block veto. Sections that need conditional carry (e.g. + FanucLocalVariableReadingSyntax's + frame-aware Vars.Local dict-merge — carry only when + MacroFrame matches) belong in the owning syntax's own + carry logic, not here.
+A section failing any criterion should be carried through its owning +syntax's own logic (single-step node.Previous read, or no carry +at all if absence is meaningful — e.g. MacroFrame absent = main +frame). +

This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still @@ -489,7 +511,7 @@ modal value reflects the final, post-compensation state.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html index 5a718866..ffa6e9d0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html @@ -371,7 +371,7 @@ and CompoundMotion arc items.

-

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.html index 53edf755..1033954b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.html @@ -105,6 +105,28 @@ inside the cloned section. Lets every block stand alone with its full modal context, so downstream readers (cache-file dumps, semantics, UI jumping to a single block) do not need EnumerateBack() to resolve modal state.

+

+A JSON section is a candidate for TrackedKeys when ALL +four criteria hold: +

  1. Writers concentrated — one or two syntaxes own the + section (e.g. LinearMotionSyntax / + CircularMotionSyntax own + MotionState; the call/return pair own + SubProgramCall-derived state).
  2. Readers distributed — multiple downstream consumers + each need the value, and none of them should walk back to find it. + Single-reader sections do not benefit from blanket carry.
  3. Every block must see the section — cache-dump readers + landing randomly, single-block UI views, and look-ahead syntaxes + all require the section to be present on every block.
  4. Carry is unconditional — no frame-gating or other + per-block veto. Sections that need conditional carry (e.g. + FanucLocalVariableReadingSyntax's + frame-aware Vars.Local dict-merge — carry only when + MacroFrame matches) belong in the owning syntax's own + carry logic, not here.
+A section failing any criterion should be carried through its owning +syntax's own logic (single-step node.Previous read, or no carry +at all if absence is meaningful — e.g. MacroFrame absent = main +frame). +

This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html index 5f0a811e..e2f5af4f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html @@ -224,7 +224,7 @@ Class SingleLineSegmenter -

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html index deacb32d..09785fe8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html @@ -99,7 +99,7 @@ Class CompoundMotionSemantic
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.html index 5d2a4917..38a7ed82 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.html @@ -111,7 +111,7 @@ non-linear because the tool orientation changes during the move.
CompoundMotionSemantic

Resolves ICompoundMotionDef into acts by delegating ItemsKey to -ResolveItems(JsonArray, LazyLinkedListNode<SyntaxPiece>, Vec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig).

+ResolveItems(JsonArray, LazyLinkedListNode<SyntaxPiece>, DVec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig, IMachineKinematics).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html index 0534b448..5801dd07 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html @@ -599,7 +599,7 @@ Each pipeline list (

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcUtil.html index b2bf57ab..3098b5d0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcUtil.html @@ -216,7 +216,7 @@ stack trace anchors the bug at the read site (which is the right place to investigate — the originating block has already passed). Continuing with NaN/0 would silently propagate corrupt coordinates downstream and is more dangerous than crashing the run. -Use GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) instead when reading from a parser- +Use GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) instead when reading from a parser- stage section (variable expressions on the current block deserve a soft diagnostic, not a hard crash).
@@ -346,8 +346,8 @@ and meaningfully indicates an authored claim on this block. -

- GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) +

+ GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress)

@@ -358,7 +358,7 @@ section, or any sub-object thereof), with strict separation between
-
public static double? GetParsedDouble(this JsonObject section, string key, Sentence sentence, NcDiagnosticProgress diag)
+
public static double? GetParsedDouble(this JsonObject section, string key, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag)

Parameters

@@ -388,7 +388,7 @@ call site that consumes a numeric tag held on a
string
-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
diag NcDiagnosticProgress
@@ -412,8 +412,8 @@ call site that consumes a numeric tag held on a -

- GetVec3d(JsonObject, string, Vec3d, Sentence, NcDiagnosticProgress) +

+ GetVec3d(JsonObject, string, Vec3d, ISentenceCarrier, NcDiagnosticProgress)

@@ -421,16 +421,16 @@ call site that consumes a numeric tag held on a fallback.

-When sentence is non-null and diag +When sentenceCarrier is non-null and diag is supplied, non-numeric X/Y/Z values are reported via -GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress); when sentence is +GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress); when sentenceCarrier is null, the diagnostic still fires but without a source-line anchor.

-
public static Vec3d GetVec3d(JsonObject json, string sectionKey, Vec3d fallback, Sentence sentence, NcDiagnosticProgress diag)
+
public static Vec3d GetVec3d(JsonObject json, string sectionKey, Vec3d fallback, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag)

Parameters

@@ -441,7 +441,7 @@ null, the diagnostic still fires but without a source-line anchor.
fallback Vec3d
-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
diag NcDiagnosticProgress
@@ -465,8 +465,8 @@ null, the diagnostic still fires but without a source-line anchor. -

- GetVec3d(JsonObject, string, Sentence, NcDiagnosticProgress) +

+ GetVec3d(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress)

@@ -474,10 +474,10 @@ null, the diagnostic still fires but without a source-line anchor. Returns null if the section or all three keys are missing; individual missing keys are filled with NaN.

-When sentence is non-null and diag +When sentenceCarrier is non-null and diag is supplied, non-numeric X/Y/Z values are reported via -GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) (id VariableExpression--Unevaluated); -when sentence is null, the diagnostic still fires +GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) (id VariableExpression--Unevaluated); +when sentenceCarrier is null, the diagnostic still fires but without a source-line anchor (used by backward-walk / dump-reading callers that cannot tie the read to the current sentence).

@@ -485,7 +485,7 @@ callers that cannot tie the read to the current sentence).
-
public static Vec3d GetVec3d(JsonObject json, string sectionKey, Sentence sentence, NcDiagnosticProgress diag)
+
public static Vec3d GetVec3d(JsonObject json, string sectionKey, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag)

Parameters

@@ -494,7 +494,7 @@ callers that cannot tie the read to the current sentence).
sectionKey string
-
sentence Sentence
+
sentenceCarrier ISentenceCarrier
diag NcDiagnosticProgress
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.BundleSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.BundleSyntax.html index 2d884b8a..7e57bcbd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.BundleSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.BundleSyntax.html @@ -394,7 +394,7 @@ If the INcSyntax -

XML element name for Regs registration.

+

XML element name for Generators registration.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html index 8314faf3..1fa42c1b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html @@ -102,7 +102,7 @@ Class SyntaxPiece
-
public class SyntaxPiece : IGetSentence
+
public class SyntaxPiece : ISentenceCarrier, IGetSentence, ISentenceIndexed
@@ -119,7 +119,9 @@ Class SyntaxPiece
Implements
+ +
@@ -198,17 +200,17 @@ to store typed values at parse time. -

- SyntaxPiece(Sentence, JsonObject) +

+ SyntaxPiece(Sentence, JsonObject, int)

-

Creates a piece binding sentence to jsonObject.

+

Creates a piece binding sentence to jsonObject with its execution-order sentenceIndex.

-
public SyntaxPiece(Sentence sentence, JsonObject jsonObject)
+
public SyntaxPiece(Sentence sentence, JsonObject jsonObject, int sentenceIndex)

Parameters

@@ -217,6 +219,8 @@ to store typed values at parse time.
jsonObject JsonObject
+
sentenceIndex int
+
@@ -306,18 +310,23 @@ to store typed values at parse time.

0-based ordinal in NC execution order. Stamped at piece construction -time by GetSyntaxPieces(ISegmenter, LazyLinkedList<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination +time by GetSyntaxPieces(ISegmenter, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the destination layers[0]'s running count, so subprogram pieces inlined by SubProgramCallSyntax get sequential indices that interleave correctly between host blocks. Useful as a cross-process alignment key (messages, ClStripPos, MachiningStep) — unlike FileLineUtil.MixedIndex(), it reflects execution order rather than (FileIndex, LineIndex) source order.

+

+Required at construction: the index is identity, not optional metadata. +Read-only after construction; the pipeline guarantees one stamping per +piece at the wrapping chokepoint. +

-
public int SentenceIndex { get; set; }
+
public int SentenceIndex { get; }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.html index 24bbd59d..969379a9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.html @@ -94,6 +94,15 @@

Classes

+
+
IndexedSentence
+

Minimal ISentenceCarrier pairing a Sentence +with its execution-order SentenceIndex. Use when there is no +richer host object that already carries the sentence — e.g. CSV-driven +runs that go straight from an input line to a Sentence +without a SyntaxPiece wrapper.

+
+
NcDiagnostic

A structured diagnostic from the SoftNcRunner pipeline, @@ -136,6 +145,28 @@ Interfaces

IGetSentence

Abstraction for a source that carries a Sentence.

+
+
+
+
ISentenceCarrier
+

Carries a reference to a source Sentence together with its +execution-order SentenceIndex. Used as the +cross-process alignment carrier for diagnostics, messages, ClStripPos, +MachiningStep, etc. — both the source content (via +GetSentence()) and the execution-order position +(via SentenceIndex) are available without +needing two separate references.

+
+
+
+
ISentenceIndexed
+

Abstraction for an object that carries a SentenceIndex — +a 0-based ordinal of its source Sentence in NC execution +order. Use as a cross-process alignment key (messages, ClStripPos, +MachiningStep, etc.) when source order +(MixedIndex(IFileLineIndex)) +is not enough because SubProgram inline reorders blocks relative to +(FileIndex, LineIndex).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html index f3adc253..ab3923c2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html @@ -264,7 +264,10 @@ Class CsvRunner

-

Reset runtime data.

+

Reset runtime data, including the execution-order +Hi.Numerical.FilePlayers.CsvRunner.sentenceIndex counter. Called from +LocalProjectService.ResetRuntime only — session stop +(EndSession) deliberately does not reset the runner.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcLine.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcLine.html index e9d513bb..3230a6bc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcLine.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcLine.html @@ -102,7 +102,7 @@ Class HardNcLine
-
public class HardNcLine : IIndexedFileLine, IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex, IFlagText, IGetSentence
+
public class HardNcLine : IIndexedFileLine, IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex, IFlagText, ISentenceCarrier, IGetSentence, ISentenceIndexed
@@ -125,7 +125,9 @@ Class HardNcLine + +
@@ -198,8 +200,8 @@ Class HardNcLine -

- HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, out NcNoteCache, IProgress<object>) +

+ HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, int, out NcNoteCache, IProgress<object>)

@@ -208,7 +210,7 @@ Class HardNcLine
-
public HardNcLine(HardNcEnv ncEnv, IndexedFileLine fileLine, HardNcLine preNcLine, out NcNoteCache ncNoteCache, IProgress<object> progress)
+
public HardNcLine(HardNcEnv ncEnv, IndexedFileLine fileLine, HardNcLine preNcLine, int sentenceIndex, out NcNoteCache ncNoteCache, IProgress<object> progress)

Parameters

@@ -222,6 +224,10 @@ Class HardNcLine
preNcLine HardNcLine

reference HardNcLine that this HardNcLine copy from. If previous HardNcLine is not null, apply previous HardNcLine.

+
+
sentenceIndex int
+

0-based ordinal in NC execution order; stamped at construction +and exposed via SentenceIndex.

ncNoteCache NcNoteCache

Output NC note cache

@@ -249,7 +255,9 @@ If previous HardNcLine i -

Ctor for initial state.

+

Ctor for initial state. The instance is the pre-pipeline seed +(RefNcLineOnInit), so +SentenceIndex is set to -1 as a “not in pipeline” sentinel.

@@ -1887,6 +1895,42 @@ So be care that do not change the NC XYZ if not needed.

+ + +

+ SentenceIndex + +

+ +

0-based ordinal in NC execution order, stamped at construction by +Hi.Numerical.FilePlayers.HardNcRunner (source-side) or by +NcOptProc (optimized-side, a fresh independent count). +Init-state lines (RefNcLineOnInit) carry +-1 as a “not in pipeline” sentinel.

+
+
+ +
+
public int SentenceIndex { get; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.SourcedActEntry.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.SourcedActEntry.html index 8039b676..9b83e35d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.SourcedActEntry.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.SourcedActEntry.html @@ -186,8 +186,8 @@ Class SourcedActEntry -

- SourcedActEntry(IGetSentence, IAct) +

+ SourcedActEntry(ISentenceCarrier, IAct)

@@ -196,13 +196,15 @@ Class SourcedActEntry
-
public SourcedActEntry(IGetSentence SentenceSource, IAct Act)
+
public SourcedActEntry(ISentenceCarrier SentenceSource, IAct Act)

Parameters

-
SentenceSource IGetSentence
-

The source sentence.

+
SentenceSource ISentenceCarrier
+

The source sentence carrier, carrying both the +Sentence and the execution-order +SentenceIndex.

Act IAct

The act associated with the source command.

@@ -263,12 +265,14 @@ Class SourcedActEntry -

The source sentence.

+

The source sentence carrier, carrying both the +Sentence and the execution-order +SentenceIndex.

-
public IGetSentence SentenceSource { get; init; }
+
public ISentenceCarrier SentenceSource { get; init; }
@@ -277,7 +281,7 @@ Class SourcedActEntry

Property Value

-
IGetSentence
+
ISentenceCarrier
diff --git a/App/wwwroot/HiAPI-docsite/api/toc.html b/App/wwwroot/HiAPI-docsite/api/toc.html index 613e353e..d6b5949f 100644 --- a/App/wwwroot/HiAPI-docsite/api/toc.html +++ b/App/wwwroot/HiAPI-docsite/api/toc.html @@ -683,7 +683,7 @@ XFactory
  • - XFactory.GenByXElementDelegate + XFactory.XGeneratorDelegate
  • XFactory.XmlExceptionDelegate @@ -2381,6 +2381,15 @@
  • IGetSentence
  • +
  • + ISentenceCarrier +
  • +
  • + ISentenceIndexed +
  • +
  • + IndexedSentence +
  • NcDiagnostic
  • @@ -2467,6 +2476,9 @@
  • CutterCompensationType
  • +
  • + FanucGotoIterationDependency +
  • FanucParameterTable
  • @@ -2573,7 +2585,19 @@ +
  • + + Hi.NcParsers.EvaluationSyntaxs.Fanuc + + +
  • Hi.NcParsers.Initializers @@ -2690,6 +2745,12 @@
  • BlockSkip
  • +
  • + CallFrame +
  • +
  • + CallStack +
  • CannedCycle
  • @@ -2711,6 +2772,18 @@
  • Dwell
  • +
  • + FanucGoto +
  • +
  • + FanucIfThen +
  • +
  • + FanucMacroCall +
  • +
  • + FanucModalMacro +
  • FanucPathSmoothing
  • @@ -2810,6 +2883,9 @@
  • MachineCoordinateState
  • +
  • + MacroFrame +
  • MotionEvent
  • @@ -2917,6 +2993,9 @@
  • BackBoringSyntax
  • +
  • + BareG28Behavior +
  • BoringCycleSyntax
  • @@ -3070,9 +3149,6 @@
  • CsScriptSyntax
  • -
  • - FanucProgramNumberSyntax -
  • FlagSyntax
  • @@ -3121,6 +3197,22 @@ +
  • + + Hi.NcParsers.ParsingSyntaxs.Fanuc + + +
  • Hi.NcParsers.ParsingSyntaxs.Heidenhain diff --git a/App/wwwroot/HiAPI-docsite/api/toc.json b/App/wwwroot/HiAPI-docsite/api/toc.json index 2b2f759f..d1858224 100644 --- a/App/wwwroot/HiAPI-docsite/api/toc.json +++ b/App/wwwroot/HiAPI-docsite/api/toc.json @@ -1,2 +1,2 @@ -{"items":[{"name":"Hi.Cbtr","href":"Hi.Cbtr.html","topicHref":"Hi.Cbtr.html","topicUid":"Hi.Cbtr","type":"Namespace","items":[{"name":"CachedTris","href":"Hi.Cbtr.CachedTris.html","topicHref":"Hi.Cbtr.CachedTris.html","topicUid":"Hi.Cbtr.CachedTris","type":"Class"},{"name":"CachedTris.SweepingMode","href":"Hi.Cbtr.CachedTris.SweepingMode.html","topicHref":"Hi.Cbtr.CachedTris.SweepingMode.html","topicUid":"Hi.Cbtr.CachedTris.SweepingMode","type":"Enum"},{"name":"CbtrPickable","href":"Hi.Cbtr.CbtrPickable.html","topicHref":"Hi.Cbtr.CbtrPickable.html","topicUid":"Hi.Cbtr.CbtrPickable","type":"Class"},{"name":"ConstructionDefectDisplayee","href":"Hi.Cbtr.ConstructionDefectDisplayee.html","topicHref":"Hi.Cbtr.ConstructionDefectDisplayee.html","topicUid":"Hi.Cbtr.ConstructionDefectDisplayee","type":"Class"},{"name":"CubeTree","href":"Hi.Cbtr.CubeTree.html","topicHref":"Hi.Cbtr.CubeTree.html","topicUid":"Hi.Cbtr.CubeTree","type":"Class"},{"name":"CubeTree.DefectNodeInfo","href":"Hi.Cbtr.CubeTree.DefectNodeInfo.html","topicHref":"Hi.Cbtr.CubeTree.DefectNodeInfo.html","topicUid":"Hi.Cbtr.CubeTree.DefectNodeInfo","type":"Class"},{"name":"CubeTree.DefectNodeInfo.TriWireInfo","href":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html","topicHref":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html","topicUid":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo","type":"Class"},{"name":"CubeTree.DefectTriWireInfoInterop","href":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html","topicHref":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html","topicUid":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop","type":"Struct"},{"name":"CubeTree.InfNodeInfo","href":"Hi.Cbtr.CubeTree.InfNodeInfo.html","topicHref":"Hi.Cbtr.CubeTree.InfNodeInfo.html","topicUid":"Hi.Cbtr.CubeTree.InfNodeInfo","type":"Class"},{"name":"CubeTree.TriWireRelationInterop","href":"Hi.Cbtr.CubeTree.TriWireRelationInterop.html","topicHref":"Hi.Cbtr.CubeTree.TriWireRelationInterop.html","topicUid":"Hi.Cbtr.CubeTree.TriWireRelationInterop","type":"Struct"},{"name":"CubeTree.diff_response_func_t","href":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicHref":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicUid":"Hi.Cbtr.CubeTree.diff_response_func_t","type":"Delegate"},{"name":"CubeTreeExportExtensions","href":"Hi.Cbtr.CubeTreeExportExtensions.html","topicHref":"Hi.Cbtr.CubeTreeExportExtensions.html","topicUid":"Hi.Cbtr.CubeTreeExportExtensions","type":"Class"},{"name":"CubeTreeFile","href":"Hi.Cbtr.CubeTreeFile.html","topicHref":"Hi.Cbtr.CubeTreeFile.html","topicUid":"Hi.Cbtr.CubeTreeFile","type":"Class"},{"name":"DiffAttachment","href":"Hi.Cbtr.DiffAttachment.html","topicHref":"Hi.Cbtr.DiffAttachment.html","topicUid":"Hi.Cbtr.DiffAttachment","type":"Class"},{"name":"GeomBoolCache","href":"Hi.Cbtr.GeomBoolCache.html","topicHref":"Hi.Cbtr.GeomBoolCache.html","topicUid":"Hi.Cbtr.GeomBoolCache","type":"Class"},{"name":"GeomBoolCacheEnum","href":"Hi.Cbtr.GeomBoolCacheEnum.html","topicHref":"Hi.Cbtr.GeomBoolCacheEnum.html","topicUid":"Hi.Cbtr.GeomBoolCacheEnum","type":"Enum"},{"name":"IGetInitStickConvex","href":"Hi.Cbtr.IGetInitStickConvex.html","topicHref":"Hi.Cbtr.IGetInitStickConvex.html","topicUid":"Hi.Cbtr.IGetInitStickConvex","type":"Interface"},{"name":"InfDefectDisplayee","href":"Hi.Cbtr.InfDefectDisplayee.html","topicHref":"Hi.Cbtr.InfDefectDisplayee.html","topicUid":"Hi.Cbtr.InfDefectDisplayee","type":"Class"},{"name":"InitStickConvex","href":"Hi.Cbtr.InitStickConvex.html","topicHref":"Hi.Cbtr.InitStickConvex.html","topicUid":"Hi.Cbtr.InitStickConvex","type":"Class"},{"name":"LsStl","href":"Hi.Cbtr.LsStl.html","topicHref":"Hi.Cbtr.LsStl.html","topicUid":"Hi.Cbtr.LsStl","type":"Class"},{"name":"Substraction","href":"Hi.Cbtr.Substraction.html","topicHref":"Hi.Cbtr.Substraction.html","topicUid":"Hi.Cbtr.Substraction","type":"Class"},{"name":"UnhighlightablePickable","href":"Hi.Cbtr.UnhighlightablePickable.html","topicHref":"Hi.Cbtr.UnhighlightablePickable.html","topicUid":"Hi.Cbtr.UnhighlightablePickable","type":"Class"},{"name":"UnmanagedSubstraction","href":"Hi.Cbtr.UnmanagedSubstraction.html","topicHref":"Hi.Cbtr.UnmanagedSubstraction.html","topicUid":"Hi.Cbtr.UnmanagedSubstraction","type":"Class"},{"name":"WireCube","href":"Hi.Cbtr.WireCube.html","topicHref":"Hi.Cbtr.WireCube.html","topicUid":"Hi.Cbtr.WireCube","type":"Class"},{"name":"node_diff_t","href":"Hi.Cbtr.node_diff_t.html","topicHref":"Hi.Cbtr.node_diff_t.html","topicUid":"Hi.Cbtr.node_diff_t","type":"Struct"}]},{"name":"Hi.Collision","href":"Hi.Collision.html","topicHref":"Hi.Collision.html","topicUid":"Hi.Collision","type":"Namespace","items":[{"name":"AnchoredCollidableLeaf","href":"Hi.Collision.AnchoredCollidableLeaf.html","topicHref":"Hi.Collision.AnchoredCollidableLeaf.html","topicUid":"Hi.Collision.AnchoredCollidableLeaf","type":"Class"},{"name":"AnchoredCollidablePair","href":"Hi.Collision.AnchoredCollidablePair.html","topicHref":"Hi.Collision.AnchoredCollidablePair.html","topicUid":"Hi.Collision.AnchoredCollidablePair","type":"Class"},{"name":"CollidableStl","href":"Hi.Collision.CollidableStl.html","topicHref":"Hi.Collision.CollidableStl.html","topicUid":"Hi.Collision.CollidableStl","type":"Class"},{"name":"CollisionFlag","href":"Hi.Collision.CollisionFlag.html","topicHref":"Hi.Collision.CollisionFlag.html","topicUid":"Hi.Collision.CollisionFlag","type":"Enum"},{"name":"CollisionIndexPair","href":"Hi.Collision.CollisionIndexPair.html","topicHref":"Hi.Collision.CollisionIndexPair.html","topicUid":"Hi.Collision.CollisionIndexPair","type":"Class"},{"name":"CollisionUtil","href":"Hi.Collision.CollisionUtil.html","topicHref":"Hi.Collision.CollisionUtil.html","topicUid":"Hi.Collision.CollisionUtil","type":"Class"},{"name":"FuncAnchoredCollidable","href":"Hi.Collision.FuncAnchoredCollidable.html","topicHref":"Hi.Collision.FuncAnchoredCollidable.html","topicUid":"Hi.Collision.FuncAnchoredCollidable","type":"Class"},{"name":"IAnchoredCollidableBased","href":"Hi.Collision.IAnchoredCollidableBased.html","topicHref":"Hi.Collision.IAnchoredCollidableBased.html","topicUid":"Hi.Collision.IAnchoredCollidableBased","type":"Interface"},{"name":"IAnchoredCollidableLeaf","href":"Hi.Collision.IAnchoredCollidableLeaf.html","topicHref":"Hi.Collision.IAnchoredCollidableLeaf.html","topicUid":"Hi.Collision.IAnchoredCollidableLeaf","type":"Interface"},{"name":"IAnchoredCollidableNode","href":"Hi.Collision.IAnchoredCollidableNode.html","topicHref":"Hi.Collision.IAnchoredCollidableNode.html","topicUid":"Hi.Collision.IAnchoredCollidableNode","type":"Interface"},{"name":"IAnchoredCollidableStem","href":"Hi.Collision.IAnchoredCollidableStem.html","topicHref":"Hi.Collision.IAnchoredCollidableStem.html","topicUid":"Hi.Collision.IAnchoredCollidableStem","type":"Interface"},{"name":"ICollidable","href":"Hi.Collision.ICollidable.html","topicHref":"Hi.Collision.ICollidable.html","topicUid":"Hi.Collision.ICollidable","type":"Interface"},{"name":"ICollidee","href":"Hi.Collision.ICollidee.html","topicHref":"Hi.Collision.ICollidee.html","topicUid":"Hi.Collision.ICollidee","type":"Interface"},{"name":"ICollisionArena","href":"Hi.Collision.ICollisionArena.html","topicHref":"Hi.Collision.ICollisionArena.html","topicUid":"Hi.Collision.ICollisionArena","type":"Interface"},{"name":"ICollisionIndex","href":"Hi.Collision.ICollisionIndex.html","topicHref":"Hi.Collision.ICollisionIndex.html","topicUid":"Hi.Collision.ICollisionIndex","type":"Interface"},{"name":"IGetAnchoredCollidablePairs","href":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicHref":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicUid":"Hi.Collision.IGetAnchoredCollidablePairs","type":"Interface"},{"name":"IGetCollidable","href":"Hi.Collision.IGetCollidable.html","topicHref":"Hi.Collision.IGetCollidable.html","topicUid":"Hi.Collision.IGetCollidable","type":"Interface"},{"name":"IGetCollisionIndexPairs","href":"Hi.Collision.IGetCollisionIndexPairs.html","topicHref":"Hi.Collision.IGetCollisionIndexPairs.html","topicUid":"Hi.Collision.IGetCollisionIndexPairs","type":"Interface"},{"name":"IGetDefaultCollidablePairs","href":"Hi.Collision.IGetDefaultCollidablePairs.html","topicHref":"Hi.Collision.IGetDefaultCollidablePairs.html","topicUid":"Hi.Collision.IGetDefaultCollidablePairs","type":"Interface"},{"name":"IGetTriTree","href":"Hi.Collision.IGetTriTree.html","topicHref":"Hi.Collision.IGetTriTree.html","topicUid":"Hi.Collision.IGetTriTree","type":"Interface"},{"name":"MechCollisionResult","href":"Hi.Collision.MechCollisionResult.html","topicHref":"Hi.Collision.MechCollisionResult.html","topicUid":"Hi.Collision.MechCollisionResult","type":"Class"},{"name":"MechCollisionUtil","href":"Hi.Collision.MechCollisionUtil.html","topicHref":"Hi.Collision.MechCollisionUtil.html","topicUid":"Hi.Collision.MechCollisionUtil","type":"Class"},{"name":"TriTree","href":"Hi.Collision.TriTree.html","topicHref":"Hi.Collision.TriTree.html","topicUid":"Hi.Collision.TriTree","type":"Class"}]},{"name":"Hi.Collisions","href":"Hi.Collisions.html","topicHref":"Hi.Collisions.html","topicUid":"Hi.Collisions","type":"Namespace","items":[{"name":"AnchoredCollidabled","href":"Hi.Collisions.AnchoredCollidabled.html","topicHref":"Hi.Collisions.AnchoredCollidabled.html","topicUid":"Hi.Collisions.AnchoredCollidabled","type":"Class"},{"name":"IAnchoredCollidabled","href":"Hi.Collisions.IAnchoredCollidabled.html","topicHref":"Hi.Collisions.IAnchoredCollidabled.html","topicUid":"Hi.Collisions.IAnchoredCollidabled","type":"Interface"}]},{"name":"Hi.Coloring","href":"Hi.Coloring.html","topicHref":"Hi.Coloring.html","topicUid":"Hi.Coloring","type":"Namespace","items":[{"name":"ColorUtil","href":"Hi.Coloring.ColorUtil.html","topicHref":"Hi.Coloring.ColorUtil.html","topicUid":"Hi.Coloring.ColorUtil","type":"Class"},{"name":"DictionaryColorGuide","href":"Hi.Coloring.DictionaryColorGuide.html","topicHref":"Hi.Coloring.DictionaryColorGuide.html","topicUid":"Hi.Coloring.DictionaryColorGuide","type":"Class"},{"name":"DiscreteQuantityColorGuide","href":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicHref":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicUid":"Hi.Coloring.DiscreteQuantityColorGuide","type":"Class"},{"name":"FilteredColorGuide","href":"Hi.Coloring.FilteredColorGuide.html","topicHref":"Hi.Coloring.FilteredColorGuide.html","topicUid":"Hi.Coloring.FilteredColorGuide","type":"Class"},{"name":"FuncRangeColorGuide","href":"Hi.Coloring.FuncRangeColorGuide.html","topicHref":"Hi.Coloring.FuncRangeColorGuide.html","topicUid":"Hi.Coloring.FuncRangeColorGuide","type":"Class"},{"name":"IColorGuide","href":"Hi.Coloring.IColorGuide.html","topicHref":"Hi.Coloring.IColorGuide.html","topicUid":"Hi.Coloring.IColorGuide","type":"Interface"},{"name":"IColorGuideProperty","href":"Hi.Coloring.IColorGuideProperty.html","topicHref":"Hi.Coloring.IColorGuideProperty.html","topicUid":"Hi.Coloring.IColorGuideProperty","type":"Interface"},{"name":"IGetColorGuide","href":"Hi.Coloring.IGetColorGuide.html","topicHref":"Hi.Coloring.IGetColorGuide.html","topicUid":"Hi.Coloring.IGetColorGuide","type":"Interface"},{"name":"IGetRangeColorRule","href":"Hi.Coloring.IGetRangeColorRule.html","topicHref":"Hi.Coloring.IGetRangeColorRule.html","topicUid":"Hi.Coloring.IGetRangeColorRule","type":"Interface"},{"name":"IGetRgb","href":"Hi.Coloring.IGetRgb.html","topicHref":"Hi.Coloring.IGetRgb.html","topicUid":"Hi.Coloring.IGetRgb","type":"Interface"},{"name":"IGetRgbWithPriority","href":"Hi.Coloring.IGetRgbWithPriority.html","topicHref":"Hi.Coloring.IGetRgbWithPriority.html","topicUid":"Hi.Coloring.IGetRgbWithPriority","type":"Interface"},{"name":"PlainColorGuide","href":"Hi.Coloring.PlainColorGuide.html","topicHref":"Hi.Coloring.PlainColorGuide.html","topicUid":"Hi.Coloring.PlainColorGuide","type":"Class"},{"name":"QuantityColorGuide","href":"Hi.Coloring.QuantityColorGuide.html","topicHref":"Hi.Coloring.QuantityColorGuide.html","topicUid":"Hi.Coloring.QuantityColorGuide","type":"Class"},{"name":"RangeColorRule","href":"Hi.Coloring.RangeColorRule.html","topicHref":"Hi.Coloring.RangeColorRule.html","topicUid":"Hi.Coloring.RangeColorRule","type":"Class"},{"name":"RatioRgbFuncEnum","href":"Hi.Coloring.RatioRgbFuncEnum.html","topicHref":"Hi.Coloring.RatioRgbFuncEnum.html","topicUid":"Hi.Coloring.RatioRgbFuncEnum","type":"Enum"},{"name":"RgbSeed","href":"Hi.Coloring.RgbSeed.html","topicHref":"Hi.Coloring.RgbSeed.html","topicUid":"Hi.Coloring.RgbSeed","type":"Class"}]},{"name":"Hi.Common","href":"Hi.Common.html","topicHref":"Hi.Common.html","topicUid":"Hi.Common","type":"Namespace","items":[{"name":"BinIoUtil","href":"Hi.Common.BinIoUtil.html","topicHref":"Hi.Common.BinIoUtil.html","topicUid":"Hi.Common.BinIoUtil","type":"Class"},{"name":"BitUtil","href":"Hi.Common.BitUtil.html","topicHref":"Hi.Common.BitUtil.html","topicUid":"Hi.Common.BitUtil","type":"Class"},{"name":"BlockingTimer","href":"Hi.Common.BlockingTimer.html","topicHref":"Hi.Common.BlockingTimer.html","topicUid":"Hi.Common.BlockingTimer","type":"Class"},{"name":"BytesUtil","href":"Hi.Common.BytesUtil.html","topicHref":"Hi.Common.BytesUtil.html","topicUid":"Hi.Common.BytesUtil","type":"Class"},{"name":"ConcurrentTimeCounter","href":"Hi.Common.ConcurrentTimeCounter.html","topicHref":"Hi.Common.ConcurrentTimeCounter.html","topicUid":"Hi.Common.ConcurrentTimeCounter","type":"Class"},{"name":"ConsoleUtil","href":"Hi.Common.ConsoleUtil.html","topicHref":"Hi.Common.ConsoleUtil.html","topicUid":"Hi.Common.ConsoleUtil","type":"Class"},{"name":"CppLogUtil","href":"Hi.Common.CppLogUtil.html","topicHref":"Hi.Common.CppLogUtil.html","topicUid":"Hi.Common.CppLogUtil","type":"Class"},{"name":"CppLogUtil.LogDelegate","href":"Hi.Common.CppLogUtil.LogDelegate.html","topicHref":"Hi.Common.CppLogUtil.LogDelegate.html","topicUid":"Hi.Common.CppLogUtil.LogDelegate","type":"Delegate"},{"name":"CultureUtil","href":"Hi.Common.CultureUtil.html","topicHref":"Hi.Common.CultureUtil.html","topicUid":"Hi.Common.CultureUtil","type":"Class"},{"name":"DuplicateUtil","href":"Hi.Common.DuplicateUtil.html","topicHref":"Hi.Common.DuplicateUtil.html","topicUid":"Hi.Common.DuplicateUtil","type":"Class"},{"name":"EnumUtil","href":"Hi.Common.EnumUtil.html","topicHref":"Hi.Common.EnumUtil.html","topicUid":"Hi.Common.EnumUtil","type":"Class"},{"name":"EnumerablePlayer","href":"Hi.Common.EnumerablePlayer.html","topicHref":"Hi.Common.EnumerablePlayer.html","topicUid":"Hi.Common.EnumerablePlayer","type":"Class"},{"name":"IAbstractNote","href":"Hi.Common.IAbstractNote.html","topicHref":"Hi.Common.IAbstractNote.html","topicUid":"Hi.Common.IAbstractNote","type":"Interface"},{"name":"IBinaryIo","href":"Hi.Common.IBinaryIo.html","topicHref":"Hi.Common.IBinaryIo.html","topicUid":"Hi.Common.IBinaryIo","type":"Interface"},{"name":"IClearCache","href":"Hi.Common.IClearCache.html","topicHref":"Hi.Common.IClearCache.html","topicUid":"Hi.Common.IClearCache","type":"Interface"},{"name":"IDuplicate","href":"Hi.Common.IDuplicate.html","topicHref":"Hi.Common.IDuplicate.html","topicUid":"Hi.Common.IDuplicate","type":"Interface"},{"name":"IGetQuantityByKey","href":"Hi.Common.IGetQuantityByKey.html","topicHref":"Hi.Common.IGetQuantityByKey.html","topicUid":"Hi.Common.IGetQuantityByKey","type":"Interface"},{"name":"IGetSelectionName","href":"Hi.Common.IGetSelectionName.html","topicHref":"Hi.Common.IGetSelectionName.html","topicUid":"Hi.Common.IGetSelectionName","type":"Interface"},{"name":"INameNote","href":"Hi.Common.INameNote.html","topicHref":"Hi.Common.INameNote.html","topicUid":"Hi.Common.INameNote","type":"Interface"},{"name":"IPreferredFileName","href":"Hi.Common.IPreferredFileName.html","topicHref":"Hi.Common.IPreferredFileName.html","topicUid":"Hi.Common.IPreferredFileName","type":"Interface"},{"name":"IProgressFraction","href":"Hi.Common.IProgressFraction.html","topicHref":"Hi.Common.IProgressFraction.html","topicUid":"Hi.Common.IProgressFraction","type":"Interface"},{"name":"ISourceFile","href":"Hi.Common.ISourceFile.html","topicHref":"Hi.Common.ISourceFile.html","topicUid":"Hi.Common.ISourceFile","type":"Interface"},{"name":"IToPresentDto","href":"Hi.Common.IToPresentDto.html","topicHref":"Hi.Common.IToPresentDto.html","topicUid":"Hi.Common.IToPresentDto","type":"Interface"},{"name":"IUpdateByContent","href":"Hi.Common.IUpdateByContent.html","topicHref":"Hi.Common.IUpdateByContent.html","topicUid":"Hi.Common.IUpdateByContent","type":"Interface"},{"name":"IUriGetter","href":"Hi.Common.IUriGetter.html","topicHref":"Hi.Common.IUriGetter.html","topicUid":"Hi.Common.IUriGetter","type":"Interface"},{"name":"IWriteBin","href":"Hi.Common.IWriteBin.html","topicHref":"Hi.Common.IWriteBin.html","topicUid":"Hi.Common.IWriteBin","type":"Interface"},{"name":"IndexSegment","href":"Hi.Common.IndexSegment.html","topicHref":"Hi.Common.IndexSegment.html","topicUid":"Hi.Common.IndexSegment","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter`1","type":"Class"},{"name":"InternalException","href":"Hi.Common.InternalException.html","topicHref":"Hi.Common.InternalException.html","topicUid":"Hi.Common.InternalException","type":"Class"},{"name":"InvokeUtil","href":"Hi.Common.InvokeUtil.html","topicHref":"Hi.Common.InvokeUtil.html","topicUid":"Hi.Common.InvokeUtil","type":"Class"},{"name":"JsonUtil","href":"Hi.Common.JsonUtil.html","topicHref":"Hi.Common.JsonUtil.html","topicUid":"Hi.Common.JsonUtil","type":"Class"},{"name":"LooseRunner","href":"Hi.Common.LooseRunner.html","topicHref":"Hi.Common.LooseRunner.html","topicUid":"Hi.Common.LooseRunner","type":"Class"},{"name":"LooseRunner.MergedCancellationTokenRun","href":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicHref":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicUid":"Hi.Common.LooseRunner.MergedCancellationTokenRun","type":"Delegate"},{"name":"ManualUtil","href":"Hi.Common.ManualUtil.html","topicHref":"Hi.Common.ManualUtil.html","topicUid":"Hi.Common.ManualUtil","type":"Class"},{"name":"MaskUtil","href":"Hi.Common.MaskUtil.html","topicHref":"Hi.Common.MaskUtil.html","topicUid":"Hi.Common.MaskUtil","type":"Class"},{"name":"NameUtil","href":"Hi.Common.NameUtil.html","topicHref":"Hi.Common.NameUtil.html","topicUid":"Hi.Common.NameUtil","type":"Class"},{"name":"PacePlayee","href":"Hi.Common.PacePlayee.html","topicHref":"Hi.Common.PacePlayee.html","topicUid":"Hi.Common.PacePlayee","type":"Class"},{"name":"PacePlayer","href":"Hi.Common.PacePlayer.html","topicHref":"Hi.Common.PacePlayer.html","topicUid":"Hi.Common.PacePlayer","type":"Class"},{"name":"Pair","href":"Hi.Common.Pair-2.html","topicHref":"Hi.Common.Pair-2.html","topicUid":"Hi.Common.Pair`2","type":"Class"},{"name":"ProgressFraction","href":"Hi.Common.ProgressFraction.html","topicHref":"Hi.Common.ProgressFraction.html","topicUid":"Hi.Common.ProgressFraction","type":"Class"},{"name":"Range","href":"Hi.Common.Range-1.html","topicHref":"Hi.Common.Range-1.html","topicUid":"Hi.Common.Range`1","type":"Class"},{"name":"ResourceUtil","href":"Hi.Common.ResourceUtil.html","topicHref":"Hi.Common.ResourceUtil.html","topicUid":"Hi.Common.ResourceUtil","type":"Class"},{"name":"RoutineBlocker","href":"Hi.Common.RoutineBlocker.html","topicHref":"Hi.Common.RoutineBlocker.html","topicUid":"Hi.Common.RoutineBlocker","type":"Class"},{"name":"SearchResult","href":"Hi.Common.SearchResult.html","topicHref":"Hi.Common.SearchResult.html","topicUid":"Hi.Common.SearchResult","type":"Enum"},{"name":"SeqPairUtil","href":"Hi.Common.SeqPairUtil.html","topicHref":"Hi.Common.SeqPairUtil.html","topicUid":"Hi.Common.SeqPairUtil","type":"Class"},{"name":"SeqPair","href":"Hi.Common.SeqPair-1.html","topicHref":"Hi.Common.SeqPair-1.html","topicUid":"Hi.Common.SeqPair`1","type":"Class"},{"name":"ServerFileExplorerConfig","href":"Hi.Common.ServerFileExplorerConfig.html","topicHref":"Hi.Common.ServerFileExplorerConfig.html","topicUid":"Hi.Common.ServerFileExplorerConfig","type":"Class"},{"name":"StringLocalizer","href":"Hi.Common.StringLocalizer.html","topicHref":"Hi.Common.StringLocalizer.html","topicUid":"Hi.Common.StringLocalizer","type":"Class"},{"name":"StringUtil","href":"Hi.Common.StringUtil.html","topicHref":"Hi.Common.StringUtil.html","topicUid":"Hi.Common.StringUtil","type":"Class"},{"name":"TaskUtil","href":"Hi.Common.TaskUtil.html","topicHref":"Hi.Common.TaskUtil.html","topicUid":"Hi.Common.TaskUtil","type":"Class"},{"name":"TimeCounter","href":"Hi.Common.TimeCounter.html","topicHref":"Hi.Common.TimeCounter.html","topicUid":"Hi.Common.TimeCounter","type":"Class"}]},{"name":"Hi.Common.Collections","href":"Hi.Common.Collections.html","topicHref":"Hi.Common.Collections.html","topicUid":"Hi.Common.Collections","type":"Namespace","items":[{"name":"DictionaryUtil","href":"Hi.Common.Collections.DictionaryUtil.html","topicHref":"Hi.Common.Collections.DictionaryUtil.html","topicUid":"Hi.Common.Collections.DictionaryUtil","type":"Class"},{"name":"EnumerableUtil","href":"Hi.Common.Collections.EnumerableUtil.html","topicHref":"Hi.Common.Collections.EnumerableUtil.html","topicUid":"Hi.Common.Collections.EnumerableUtil","type":"Class"},{"name":"FixedSizeConcurrentLinkedListUtil","href":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicHref":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicUid":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil","type":"Class"},{"name":"LazyLinkedListNode","href":"Hi.Common.Collections.LazyLinkedListNode-1.html","topicHref":"Hi.Common.Collections.LazyLinkedListNode-1.html","topicUid":"Hi.Common.Collections.LazyLinkedListNode`1","type":"Class"},{"name":"LazyLinkedList","href":"Hi.Common.Collections.LazyLinkedList-1.html","topicHref":"Hi.Common.Collections.LazyLinkedList-1.html","topicUid":"Hi.Common.Collections.LazyLinkedList`1","type":"Class"},{"name":"LinkedListUtil","href":"Hi.Common.Collections.LinkedListUtil.html","topicHref":"Hi.Common.Collections.LinkedListUtil.html","topicUid":"Hi.Common.Collections.LinkedListUtil","type":"Class"},{"name":"ListIndexBasedEnumerable","href":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedEnumerable`1","type":"Class"},{"name":"ListIndexBasedIEnumerator","href":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedIEnumerator`1","type":"Class"},{"name":"ListUtil","href":"Hi.Common.Collections.ListUtil.html","topicHref":"Hi.Common.Collections.ListUtil.html","topicUid":"Hi.Common.Collections.ListUtil","type":"Class"},{"name":"ListUtil.OuterPolationMode","href":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicHref":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicUid":"Hi.Common.Collections.ListUtil.OuterPolationMode","type":"Enum"},{"name":"SearchTargetMode","href":"Hi.Common.Collections.SearchTargetMode.html","topicHref":"Hi.Common.Collections.SearchTargetMode.html","topicUid":"Hi.Common.Collections.SearchTargetMode","type":"Enum"},{"name":"SeekDirection","href":"Hi.Common.Collections.SeekDirection.html","topicHref":"Hi.Common.Collections.SeekDirection.html","topicUid":"Hi.Common.Collections.SeekDirection","type":"Enum"},{"name":"SortedListUtil","href":"Hi.Common.Collections.SortedListUtil.html","topicHref":"Hi.Common.Collections.SortedListUtil.html","topicUid":"Hi.Common.Collections.SortedListUtil","type":"Class"},{"name":"SubList","href":"Hi.Common.Collections.SubList-1.html","topicHref":"Hi.Common.Collections.SubList-1.html","topicUid":"Hi.Common.Collections.SubList`1","type":"Class"},{"name":"SynList","href":"Hi.Common.Collections.SynList-1.html","topicHref":"Hi.Common.Collections.SynList-1.html","topicUid":"Hi.Common.Collections.SynList`1","type":"Class"}]},{"name":"Hi.Common.CsvUtils","href":"Hi.Common.CsvUtils.html","topicHref":"Hi.Common.CsvUtils.html","topicUid":"Hi.Common.CsvUtils","type":"Namespace","items":[{"name":"CsvInputKit","href":"Hi.Common.CsvUtils.CsvInputKit.html","topicHref":"Hi.Common.CsvUtils.CsvInputKit.html","topicUid":"Hi.Common.CsvUtils.CsvInputKit","type":"Class"},{"name":"CsvOutputKit","href":"Hi.Common.CsvUtils.CsvOutputKit.html","topicHref":"Hi.Common.CsvUtils.CsvOutputKit.html","topicUid":"Hi.Common.CsvUtils.CsvOutputKit","type":"Class"},{"name":"CsvUtil","href":"Hi.Common.CsvUtils.CsvUtil.html","topicHref":"Hi.Common.CsvUtils.CsvUtil.html","topicUid":"Hi.Common.CsvUtils.CsvUtil","type":"Class"},{"name":"ICsvRowIo","href":"Hi.Common.CsvUtils.ICsvRowIo.html","topicHref":"Hi.Common.CsvUtils.ICsvRowIo.html","topicUid":"Hi.Common.CsvUtils.ICsvRowIo","type":"Interface"},{"name":"IGetCsvDictionary","href":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicHref":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicUid":"Hi.Common.CsvUtils.IGetCsvDictionary","type":"Interface"}]},{"name":"Hi.Common.FileLines","href":"Hi.Common.FileLines.html","topicHref":"Hi.Common.FileLines.html","topicUid":"Hi.Common.FileLines","type":"Namespace","items":[{"name":"FileBeginEventArgs","href":"Hi.Common.FileLines.FileBeginEventArgs.html","topicHref":"Hi.Common.FileLines.FileBeginEventArgs.html","topicUid":"Hi.Common.FileLines.FileBeginEventArgs","type":"Class"},{"name":"FileEndEventArgs","href":"Hi.Common.FileLines.FileEndEventArgs.html","topicHref":"Hi.Common.FileLines.FileEndEventArgs.html","topicUid":"Hi.Common.FileLines.FileEndEventArgs","type":"Class"},{"name":"FileLineCharIndex","href":"Hi.Common.FileLines.FileLineCharIndex.html","topicHref":"Hi.Common.FileLines.FileLineCharIndex.html","topicUid":"Hi.Common.FileLines.FileLineCharIndex","type":"Class"},{"name":"FileLineCharIndexSegment","href":"Hi.Common.FileLines.FileLineCharIndexSegment.html","topicHref":"Hi.Common.FileLines.FileLineCharIndexSegment.html","topicUid":"Hi.Common.FileLines.FileLineCharIndexSegment","type":"Class"},{"name":"FileLineIndex","href":"Hi.Common.FileLines.FileLineIndex.html","topicHref":"Hi.Common.FileLines.FileLineIndex.html","topicUid":"Hi.Common.FileLines.FileLineIndex","type":"Class"},{"name":"FileLineUtil","href":"Hi.Common.FileLines.FileLineUtil.html","topicHref":"Hi.Common.FileLines.FileLineUtil.html","topicUid":"Hi.Common.FileLines.FileLineUtil","type":"Class"},{"name":"FileUtil","href":"Hi.Common.FileLines.FileUtil.html","topicHref":"Hi.Common.FileLines.FileUtil.html","topicUid":"Hi.Common.FileLines.FileUtil","type":"Class"},{"name":"IFileChangedEventSupport","href":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicHref":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicUid":"Hi.Common.FileLines.IFileChangedEventSupport","type":"Interface"},{"name":"IFileLine","href":"Hi.Common.FileLines.IFileLine.html","topicHref":"Hi.Common.FileLines.IFileLine.html","topicUid":"Hi.Common.FileLines.IFileLine","type":"Interface"},{"name":"IFileLineCharIndex","href":"Hi.Common.FileLines.IFileLineCharIndex.html","topicHref":"Hi.Common.FileLines.IFileLineCharIndex.html","topicUid":"Hi.Common.FileLines.IFileLineCharIndex","type":"Interface"},{"name":"IFileLineIndex","href":"Hi.Common.FileLines.IFileLineIndex.html","topicHref":"Hi.Common.FileLines.IFileLineIndex.html","topicUid":"Hi.Common.FileLines.IFileLineIndex","type":"Interface"},{"name":"IGetFileLineIndex","href":"Hi.Common.FileLines.IGetFileLineIndex.html","topicHref":"Hi.Common.FileLines.IGetFileLineIndex.html","topicUid":"Hi.Common.FileLines.IGetFileLineIndex","type":"Interface"},{"name":"IGetIndexedFileLine","href":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IGetIndexedFileLine","type":"Interface"},{"name":"IIndexedFileLine","href":"Hi.Common.FileLines.IIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IIndexedFileLine","type":"Interface"},{"name":"ILineChangedEventSupport","href":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicHref":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicUid":"Hi.Common.FileLines.ILineChangedEventSupport","type":"Interface"},{"name":"IndexedFile","href":"Hi.Common.FileLines.IndexedFile.html","topicHref":"Hi.Common.FileLines.IndexedFile.html","topicUid":"Hi.Common.FileLines.IndexedFile","type":"Class"},{"name":"IndexedFileLine","href":"Hi.Common.FileLines.IndexedFileLine.html","topicHref":"Hi.Common.FileLines.IndexedFileLine.html","topicUid":"Hi.Common.FileLines.IndexedFileLine","type":"Class"},{"name":"IndexedFileLineChar","href":"Hi.Common.FileLines.IndexedFileLineChar.html","topicHref":"Hi.Common.FileLines.IndexedFileLineChar.html","topicUid":"Hi.Common.FileLines.IndexedFileLineChar","type":"Class"},{"name":"LineBeginEventArgs","href":"Hi.Common.FileLines.LineBeginEventArgs.html","topicHref":"Hi.Common.FileLines.LineBeginEventArgs.html","topicUid":"Hi.Common.FileLines.LineBeginEventArgs","type":"Class"},{"name":"LineEndEventArgs","href":"Hi.Common.FileLines.LineEndEventArgs.html","topicHref":"Hi.Common.FileLines.LineEndEventArgs.html","topicUid":"Hi.Common.FileLines.LineEndEventArgs","type":"Class"}]},{"name":"Hi.Common.Messages","href":"Hi.Common.Messages.html","topicHref":"Hi.Common.Messages.html","topicUid":"Hi.Common.Messages","type":"Namespace","items":[{"name":"ActionProgress","href":"Hi.Common.Messages.ActionProgress-1.html","topicHref":"Hi.Common.Messages.ActionProgress-1.html","topicUid":"Hi.Common.Messages.ActionProgress`1","type":"Class"},{"name":"BootstrapTheme","href":"Hi.Common.Messages.BootstrapTheme.html","topicHref":"Hi.Common.Messages.BootstrapTheme.html","topicUid":"Hi.Common.Messages.BootstrapTheme","type":"Enum"},{"name":"DebugUtil","href":"Hi.Common.Messages.DebugUtil.html","topicHref":"Hi.Common.Messages.DebugUtil.html","topicUid":"Hi.Common.Messages.DebugUtil","type":"Class"},{"name":"ExceptionUtil","href":"Hi.Common.Messages.ExceptionUtil.html","topicHref":"Hi.Common.Messages.ExceptionUtil.html","topicUid":"Hi.Common.Messages.ExceptionUtil","type":"Class"},{"name":"MessageBoardUtil","href":"Hi.Common.Messages.MessageBoardUtil.html","topicHref":"Hi.Common.Messages.MessageBoardUtil.html","topicUid":"Hi.Common.Messages.MessageBoardUtil","type":"Class"},{"name":"MessageFlag","href":"Hi.Common.Messages.MessageFlag.html","topicHref":"Hi.Common.Messages.MessageFlag.html","topicUid":"Hi.Common.Messages.MessageFlag","type":"Enum"},{"name":"MultiTagMessage","href":"Hi.Common.Messages.MultiTagMessage.html","topicHref":"Hi.Common.Messages.MultiTagMessage.html","topicUid":"Hi.Common.Messages.MultiTagMessage","type":"Class"},{"name":"MultiTagMessageUtil","href":"Hi.Common.Messages.MultiTagMessageUtil.html","topicHref":"Hi.Common.Messages.MultiTagMessageUtil.html","topicUid":"Hi.Common.Messages.MultiTagMessageUtil","type":"Class"},{"name":"ShowMessageBoardDelegate","href":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicHref":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicUid":"Hi.Common.Messages.ShowMessageBoardDelegate","type":"Delegate"}]},{"name":"Hi.Common.MinMaxUtils","href":"Hi.Common.MinMaxUtils.html","topicHref":"Hi.Common.MinMaxUtils.html","topicUid":"Hi.Common.MinMaxUtils","type":"Namespace","items":[{"name":"IndexedMinMaxPos","href":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicHref":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicUid":"Hi.Common.MinMaxUtils.IndexedMinMaxPos`2","type":"Class"},{"name":"MinMaxUtil","href":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicHref":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicUid":"Hi.Common.MinMaxUtils.MinMaxUtil","type":"Class"}]},{"name":"Hi.Common.NativeProgresses","href":"Hi.Common.NativeProgresses.html","topicHref":"Hi.Common.NativeProgresses.html","topicUid":"Hi.Common.NativeProgresses","type":"Namespace","items":[{"name":"NativeProgressFraction","href":"Hi.Common.NativeProgresses.NativeProgressFraction.html","topicHref":"Hi.Common.NativeProgresses.NativeProgressFraction.html","topicUid":"Hi.Common.NativeProgresses.NativeProgressFraction","type":"Class"},{"name":"progress_monitor_t","href":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicHref":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicUid":"Hi.Common.NativeProgresses.progress_monitor_t","type":"Struct"},{"name":"report_progress_func_t","href":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicHref":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicUid":"Hi.Common.NativeProgresses.report_progress_func_t","type":"Delegate"}]},{"name":"Hi.Common.ParallelBulkUtils","href":"Hi.Common.ParallelBulkUtils.html","topicHref":"Hi.Common.ParallelBulkUtils.html","topicUid":"Hi.Common.ParallelBulkUtils","type":"Namespace","items":[{"name":"ParallelBulkReader","href":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkReader`1","type":"Class"},{"name":"ParallelBulkWriter","href":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter`1","type":"Class"},{"name":"ReadBulkDelegate","href":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate`1","type":"Delegate"},{"name":"SequentialBulkReader","href":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.SequentialBulkReader`1","type":"Class"}]},{"name":"Hi.Common.PathUtils","href":"Hi.Common.PathUtils.html","topicHref":"Hi.Common.PathUtils.html","topicUid":"Hi.Common.PathUtils","type":"Namespace","items":[{"name":"ExtendedNamedPath","href":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicHref":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicUid":"Hi.Common.PathUtils.ExtendedNamedPath","type":"Class"},{"name":"HttpUtil","href":"Hi.Common.PathUtils.HttpUtil.html","topicHref":"Hi.Common.PathUtils.HttpUtil.html","topicUid":"Hi.Common.PathUtils.HttpUtil","type":"Class"},{"name":"Lang","href":"Hi.Common.PathUtils.Lang.html","topicHref":"Hi.Common.PathUtils.Lang.html","topicUid":"Hi.Common.PathUtils.Lang","type":"Class"},{"name":"NamedPath","href":"Hi.Common.PathUtils.NamedPath.html","topicHref":"Hi.Common.PathUtils.NamedPath.html","topicUid":"Hi.Common.PathUtils.NamedPath","type":"Class"},{"name":"PathUtil","href":"Hi.Common.PathUtils.PathUtil.html","topicHref":"Hi.Common.PathUtils.PathUtil.html","topicUid":"Hi.Common.PathUtils.PathUtil","type":"Class"}]},{"name":"Hi.Common.QueueCacheUtils","href":"Hi.Common.QueueCacheUtils.html","topicHref":"Hi.Common.QueueCacheUtils.html","topicUid":"Hi.Common.QueueCacheUtils","type":"Namespace","items":[{"name":"QueueCacherHost","href":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacherHost`1","type":"Class"},{"name":"QueueCacher","href":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacher`1","type":"Class"}]},{"name":"Hi.Common.XmlUtils","href":"Hi.Common.XmlUtils.html","topicHref":"Hi.Common.XmlUtils.html","topicUid":"Hi.Common.XmlUtils","type":"Namespace","items":[{"name":"FileRefSource","href":"Hi.Common.XmlUtils.FileRefSource-1.html","topicHref":"Hi.Common.XmlUtils.FileRefSource-1.html","topicUid":"Hi.Common.XmlUtils.FileRefSource`1","type":"Class"},{"name":"IMakeXmlSource","href":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicHref":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicUid":"Hi.Common.XmlUtils.IMakeXmlSource","type":"Interface"},{"name":"IToXElement","href":"Hi.Common.XmlUtils.IToXElement.html","topicHref":"Hi.Common.XmlUtils.IToXElement.html","topicUid":"Hi.Common.XmlUtils.IToXElement","type":"Interface"},{"name":"ProjectApiVersion","href":"Hi.Common.XmlUtils.ProjectApiVersion.html","topicHref":"Hi.Common.XmlUtils.ProjectApiVersion.html","topicUid":"Hi.Common.XmlUtils.ProjectApiVersion","type":"Class"},{"name":"SetFileDelegate","href":"Hi.Common.XmlUtils.SetFileDelegate.html","topicHref":"Hi.Common.XmlUtils.SetFileDelegate.html","topicUid":"Hi.Common.XmlUtils.SetFileDelegate","type":"Delegate"},{"name":"XFactory","href":"Hi.Common.XmlUtils.XFactory.html","topicHref":"Hi.Common.XmlUtils.XFactory.html","topicUid":"Hi.Common.XmlUtils.XFactory","type":"Class"},{"name":"XFactory.GenByXElementDelegate","href":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.GenByXElementDelegate","type":"Delegate"},{"name":"XFactory.XmlExceptionDelegate","href":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate","type":"Delegate"},{"name":"XmlUtil","href":"Hi.Common.XmlUtils.XmlUtil.html","topicHref":"Hi.Common.XmlUtils.XmlUtil.html","topicUid":"Hi.Common.XmlUtils.XmlUtil","type":"Class"}]},{"name":"Hi.CutterLocations","href":"Hi.CutterLocations.html","topicHref":"Hi.CutterLocations.html","topicUid":"Hi.CutterLocations","type":"Namespace","items":[{"name":"IGetProgramCl","href":"Hi.CutterLocations.IGetProgramCl.html","topicHref":"Hi.CutterLocations.IGetProgramCl.html","topicUid":"Hi.CutterLocations.IGetProgramCl","type":"Interface"},{"name":"SimpleCl","href":"Hi.CutterLocations.SimpleCl.html","topicHref":"Hi.CutterLocations.SimpleCl.html","topicUid":"Hi.CutterLocations.SimpleCl","type":"Class"}]},{"name":"Hi.CutterLocations.ClPath","href":"Hi.CutterLocations.ClPath.html","topicHref":"Hi.CutterLocations.ClPath.html","topicUid":"Hi.CutterLocations.ClPath","type":"Namespace","items":[{"name":"ClCircleArc","href":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicHref":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicUid":"Hi.CutterLocations.ClPath.ClCircleArc","type":"Class"},{"name":"ClLinear","href":"Hi.CutterLocations.ClPath.ClLinear.html","topicHref":"Hi.CutterLocations.ClPath.ClLinear.html","topicUid":"Hi.CutterLocations.ClPath.ClLinear","type":"Class"},{"name":"IClPath","href":"Hi.CutterLocations.ClPath.IClPath.html","topicHref":"Hi.CutterLocations.ClPath.IClPath.html","topicUid":"Hi.CutterLocations.ClPath.IClPath","type":"Interface"}]},{"name":"Hi.CutterLocations.ClStrips","href":"Hi.CutterLocations.ClStrips.html","topicHref":"Hi.CutterLocations.ClStrips.html","topicUid":"Hi.CutterLocations.ClStrips","type":"Namespace","items":[{"name":"ClStrip","href":"Hi.CutterLocations.ClStrips.ClStrip.html","topicHref":"Hi.CutterLocations.ClStrips.ClStrip.html","topicUid":"Hi.CutterLocations.ClStrips.ClStrip","type":"Class"},{"name":"ClStripPos","href":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicHref":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicUid":"Hi.CutterLocations.ClStrips.ClStripPos","type":"Class"},{"name":"RgbFunc","href":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicHref":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicUid":"Hi.CutterLocations.ClStrips.RgbFunc","type":"Delegate"}]},{"name":"Hi.Disp","href":"Hi.Disp.html","topicHref":"Hi.Disp.html","topicUid":"Hi.Disp","type":"Namespace","items":[{"name":"Bind","href":"Hi.Disp.Bind.html","topicHref":"Hi.Disp.Bind.html","topicUid":"Hi.Disp.Bind","type":"Class"},{"name":"Box3dDispUtil","href":"Hi.Disp.Box3dDispUtil.html","topicHref":"Hi.Disp.Box3dDispUtil.html","topicUid":"Hi.Disp.Box3dDispUtil","type":"Class"},{"name":"Box3dDispUtil.BoxableExpandToBox3dDel","href":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicHref":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicUid":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel","type":"Delegate"},{"name":"DelegateFuncDisplayee","href":"Hi.Disp.DelegateFuncDisplayee.html","topicHref":"Hi.Disp.DelegateFuncDisplayee.html","topicUid":"Hi.Disp.DelegateFuncDisplayee","type":"Class"},{"name":"DispEngine","href":"Hi.Disp.DispEngine.html","topicHref":"Hi.Disp.DispEngine.html","topicUid":"Hi.Disp.DispEngine","type":"Class"},{"name":"DispEngine.ImageRequestedDelegate","href":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicHref":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicUid":"Hi.Disp.DispEngine.ImageRequestedDelegate","type":"Delegate"},{"name":"DispEngineConfig","href":"Hi.Disp.DispEngineConfig.html","topicHref":"Hi.Disp.DispEngineConfig.html","topicUid":"Hi.Disp.DispEngineConfig","type":"Class"},{"name":"DispFrameUtil","href":"Hi.Disp.DispFrameUtil.html","topicHref":"Hi.Disp.DispFrameUtil.html","topicUid":"Hi.Disp.DispFrameUtil","type":"Class"},{"name":"DispList","href":"Hi.Disp.DispList.html","topicHref":"Hi.Disp.DispList.html","topicUid":"Hi.Disp.DispList","type":"Class"},{"name":"DispUtil","href":"Hi.Disp.DispUtil.html","topicHref":"Hi.Disp.DispUtil.html","topicUid":"Hi.Disp.DispUtil","type":"Class"},{"name":"Drawing","href":"Hi.Disp.Drawing.html","topicHref":"Hi.Disp.Drawing.html","topicUid":"Hi.Disp.Drawing","type":"Class"},{"name":"FuncDisplayee","href":"Hi.Disp.FuncDisplayee.html","topicHref":"Hi.Disp.FuncDisplayee.html","topicUid":"Hi.Disp.FuncDisplayee","type":"Class"},{"name":"GL","href":"Hi.Disp.GL.html","topicHref":"Hi.Disp.GL.html","topicUid":"Hi.Disp.GL","type":"Class"},{"name":"IDisplayee","href":"Hi.Disp.IDisplayee.html","topicHref":"Hi.Disp.IDisplayee.html","topicUid":"Hi.Disp.IDisplayee","type":"Interface"},{"name":"IGetDispEngine","href":"Hi.Disp.IGetDispEngine.html","topicHref":"Hi.Disp.IGetDispEngine.html","topicUid":"Hi.Disp.IGetDispEngine","type":"Interface"},{"name":"IGetPickable","href":"Hi.Disp.IGetPickable.html","topicHref":"Hi.Disp.IGetPickable.html","topicUid":"Hi.Disp.IGetPickable","type":"Interface"},{"name":"IGlContextDirver","href":"Hi.Disp.IGlContextDirver.html","topicHref":"Hi.Disp.IGlContextDirver.html","topicUid":"Hi.Disp.IGlContextDirver","type":"Interface"},{"name":"MatStack","href":"Hi.Disp.MatStack.html","topicHref":"Hi.Disp.MatStack.html","topicUid":"Hi.Disp.MatStack","type":"Class"},{"name":"MatStack.ItemDisposable","href":"Hi.Disp.MatStack.ItemDisposable.html","topicHref":"Hi.Disp.MatStack.ItemDisposable.html","topicUid":"Hi.Disp.MatStack.ItemDisposable","type":"Class"},{"name":"MvpBoxRelation","href":"Hi.Disp.MvpBoxRelation.html","topicHref":"Hi.Disp.MvpBoxRelation.html","topicUid":"Hi.Disp.MvpBoxRelation","type":"Enum"},{"name":"Pickable","href":"Hi.Disp.Pickable.html","topicHref":"Hi.Disp.Pickable.html","topicUid":"Hi.Disp.Pickable","type":"Class"},{"name":"PopModelMat","href":"Hi.Disp.PopModelMat.html","topicHref":"Hi.Disp.PopModelMat.html","topicUid":"Hi.Disp.PopModelMat","type":"Class"},{"name":"PushModelMat","href":"Hi.Disp.PushModelMat.html","topicHref":"Hi.Disp.PushModelMat.html","topicUid":"Hi.Disp.PushModelMat","type":"Class"},{"name":"Segment3dDispUtil","href":"Hi.Disp.Segment3dDispUtil.html","topicHref":"Hi.Disp.Segment3dDispUtil.html","topicUid":"Hi.Disp.Segment3dDispUtil","type":"Class"},{"name":"ShowEventPickable","href":"Hi.Disp.ShowEventPickable.html","topicHref":"Hi.Disp.ShowEventPickable.html","topicUid":"Hi.Disp.ShowEventPickable","type":"Class"},{"name":"Stamp","href":"Hi.Disp.Stamp.html","topicHref":"Hi.Disp.Stamp.html","topicUid":"Hi.Disp.Stamp","type":"Enum"},{"name":"StringDrawing","href":"Hi.Disp.StringDrawing.html","topicHref":"Hi.Disp.StringDrawing.html","topicUid":"Hi.Disp.StringDrawing","type":"Class"},{"name":"Tri3dDispUtil","href":"Hi.Disp.Tri3dDispUtil.html","topicHref":"Hi.Disp.Tri3dDispUtil.html","topicUid":"Hi.Disp.Tri3dDispUtil","type":"Class"},{"name":"Vec3dDispUtil","href":"Hi.Disp.Vec3dDispUtil.html","topicHref":"Hi.Disp.Vec3dDispUtil.html","topicUid":"Hi.Disp.Vec3dDispUtil","type":"Class"},{"name":"WrappedDisplayee","href":"Hi.Disp.WrappedDisplayee.html","topicHref":"Hi.Disp.WrappedDisplayee.html","topicUid":"Hi.Disp.WrappedDisplayee","type":"Class"}]},{"name":"Hi.Disp.Flag","href":"Hi.Disp.Flag.html","topicHref":"Hi.Disp.Flag.html","topicUid":"Hi.Disp.Flag","type":"Namespace","items":[{"name":"ColorScaleBar","href":"Hi.Disp.Flag.ColorScaleBar.html","topicHref":"Hi.Disp.Flag.ColorScaleBar.html","topicUid":"Hi.Disp.Flag.ColorScaleBar","type":"Class"},{"name":"CoordinateDrawing","href":"Hi.Disp.Flag.CoordinateDrawing.html","topicHref":"Hi.Disp.Flag.CoordinateDrawing.html","topicUid":"Hi.Disp.Flag.CoordinateDrawing","type":"Class"},{"name":"CubicalFlagDrawing","href":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicHref":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicUid":"Hi.Disp.Flag.CubicalFlagDrawing","type":"Class"},{"name":"DimensionBar","href":"Hi.Disp.Flag.DimensionBar.html","topicHref":"Hi.Disp.Flag.DimensionBar.html","topicUid":"Hi.Disp.Flag.DimensionBar","type":"Class"},{"name":"DispCoverUtil","href":"Hi.Disp.Flag.DispCoverUtil.html","topicHref":"Hi.Disp.Flag.DispCoverUtil.html","topicUid":"Hi.Disp.Flag.DispCoverUtil","type":"Class"}]},{"name":"Hi.Disp.Treat","href":"Hi.Disp.Treat.html","topicHref":"Hi.Disp.Treat.html","topicUid":"Hi.Disp.Treat","type":"Namespace","items":[{"name":"LineWidthSwap","href":"Hi.Disp.Treat.LineWidthSwap.html","topicHref":"Hi.Disp.Treat.LineWidthSwap.html","topicUid":"Hi.Disp.Treat.LineWidthSwap","type":"Class"},{"name":"LineWidthTreat","href":"Hi.Disp.Treat.LineWidthTreat.html","topicHref":"Hi.Disp.Treat.LineWidthTreat.html","topicUid":"Hi.Disp.Treat.LineWidthTreat","type":"Class"},{"name":"PointSizeSwap","href":"Hi.Disp.Treat.PointSizeSwap.html","topicHref":"Hi.Disp.Treat.PointSizeSwap.html","topicUid":"Hi.Disp.Treat.PointSizeSwap","type":"Class"},{"name":"PointSizeTreat","href":"Hi.Disp.Treat.PointSizeTreat.html","topicHref":"Hi.Disp.Treat.PointSizeTreat.html","topicUid":"Hi.Disp.Treat.PointSizeTreat","type":"Class"},{"name":"RgbSwap","href":"Hi.Disp.Treat.RgbSwap.html","topicHref":"Hi.Disp.Treat.RgbSwap.html","topicUid":"Hi.Disp.Treat.RgbSwap","type":"Class"},{"name":"RgbTreat","href":"Hi.Disp.Treat.RgbTreat.html","topicHref":"Hi.Disp.Treat.RgbTreat.html","topicUid":"Hi.Disp.Treat.RgbTreat","type":"Class"},{"name":"RgbWrapper","href":"Hi.Disp.Treat.RgbWrapper.html","topicHref":"Hi.Disp.Treat.RgbWrapper.html","topicUid":"Hi.Disp.Treat.RgbWrapper","type":"Class"},{"name":"TransformationWrapper","href":"Hi.Disp.Treat.TransformationWrapper.html","topicHref":"Hi.Disp.Treat.TransformationWrapper.html","topicUid":"Hi.Disp.Treat.TransformationWrapper","type":"Class"}]},{"name":"Hi.Fanuc","href":"Hi.Fanuc.html","topicHref":"Hi.Fanuc.html","topicUid":"Hi.Fanuc","type":"Namespace","items":[{"name":"FanucVarTable","href":"Hi.Fanuc.FanucVarTable.html","topicHref":"Hi.Fanuc.FanucVarTable.html","topicUid":"Hi.Fanuc.FanucVarTable","type":"Class"},{"name":"FanucVarValue","href":"Hi.Fanuc.FanucVarValue.html","topicHref":"Hi.Fanuc.FanucVarValue.html","topicUid":"Hi.Fanuc.FanucVarValue","type":"Struct"}]},{"name":"Hi.Geom","href":"Hi.Geom.html","topicHref":"Hi.Geom.html","topicUid":"Hi.Geom","type":"Namespace","items":[{"name":"ArrayUtil","href":"Hi.Geom.ArrayUtil.html","topicHref":"Hi.Geom.ArrayUtil.html","topicUid":"Hi.Geom.ArrayUtil","type":"Class"},{"name":"AxisAngle4d","href":"Hi.Geom.AxisAngle4d.html","topicHref":"Hi.Geom.AxisAngle4d.html","topicUid":"Hi.Geom.AxisAngle4d","type":"Class"},{"name":"Box2d","href":"Hi.Geom.Box2d.html","topicHref":"Hi.Geom.Box2d.html","topicUid":"Hi.Geom.Box2d","type":"Class"},{"name":"Box2d.NoInit","href":"Hi.Geom.Box2d.NoInit.html","topicHref":"Hi.Geom.Box2d.NoInit.html","topicUid":"Hi.Geom.Box2d.NoInit","type":"Class"},{"name":"Box3d","href":"Hi.Geom.Box3d.html","topicHref":"Hi.Geom.Box3d.html","topicUid":"Hi.Geom.Box3d","type":"Class"},{"name":"Box3d.NoInit","href":"Hi.Geom.Box3d.NoInit.html","topicHref":"Hi.Geom.Box3d.NoInit.html","topicUid":"Hi.Geom.Box3d.NoInit","type":"Class"},{"name":"Cylindroid","href":"Hi.Geom.Cylindroid.html","topicHref":"Hi.Geom.Cylindroid.html","topicUid":"Hi.Geom.Cylindroid","type":"Class"},{"name":"DVec3d","href":"Hi.Geom.DVec3d.html","topicHref":"Hi.Geom.DVec3d.html","topicUid":"Hi.Geom.DVec3d","type":"Class"},{"name":"Dir","href":"Hi.Geom.Dir.html","topicHref":"Hi.Geom.Dir.html","topicUid":"Hi.Geom.Dir","type":"Enum"},{"name":"ExtendedCylinder","href":"Hi.Geom.ExtendedCylinder.html","topicHref":"Hi.Geom.ExtendedCylinder.html","topicUid":"Hi.Geom.ExtendedCylinder","type":"Class"},{"name":"Flat3d","href":"Hi.Geom.Flat3d.html","topicHref":"Hi.Geom.Flat3d.html","topicUid":"Hi.Geom.Flat3d","type":"Class"},{"name":"FractionStatus","href":"Hi.Geom.FractionStatus.html","topicHref":"Hi.Geom.FractionStatus.html","topicUid":"Hi.Geom.FractionStatus","type":"Enum"},{"name":"Fraction","href":"Hi.Geom.Fraction-1.html","topicHref":"Hi.Geom.Fraction-1.html","topicUid":"Hi.Geom.Fraction`1","type":"Struct"},{"name":"GeomCombination","href":"Hi.Geom.GeomCombination.html","topicHref":"Hi.Geom.GeomCombination.html","topicUid":"Hi.Geom.GeomCombination","type":"Class"},{"name":"GeomUtil","href":"Hi.Geom.GeomUtil.html","topicHref":"Hi.Geom.GeomUtil.html","topicUid":"Hi.Geom.GeomUtil","type":"Class"},{"name":"IExpandToBox2d","href":"Hi.Geom.IExpandToBox2d.html","topicHref":"Hi.Geom.IExpandToBox2d.html","topicUid":"Hi.Geom.IExpandToBox2d","type":"Interface"},{"name":"IExpandToBox3d","href":"Hi.Geom.IExpandToBox3d.html","topicHref":"Hi.Geom.IExpandToBox3d.html","topicUid":"Hi.Geom.IExpandToBox3d","type":"Interface"},{"name":"IFlat3d","href":"Hi.Geom.IFlat3d.html","topicHref":"Hi.Geom.IFlat3d.html","topicUid":"Hi.Geom.IFlat3d","type":"Interface"},{"name":"IGenStl","href":"Hi.Geom.IGenStl.html","topicHref":"Hi.Geom.IGenStl.html","topicUid":"Hi.Geom.IGenStl","type":"Interface"},{"name":"IGeomProperty","href":"Hi.Geom.IGeomProperty.html","topicHref":"Hi.Geom.IGeomProperty.html","topicUid":"Hi.Geom.IGeomProperty","type":"Interface"},{"name":"IGetStl","href":"Hi.Geom.IGetStl.html","topicHref":"Hi.Geom.IGetStl.html","topicUid":"Hi.Geom.IGetStl","type":"Interface"},{"name":"IGetZrContour","href":"Hi.Geom.IGetZrContour.html","topicHref":"Hi.Geom.IGetZrContour.html","topicUid":"Hi.Geom.IGetZrContour","type":"Interface"},{"name":"IGetZrList","href":"Hi.Geom.IGetZrList.html","topicHref":"Hi.Geom.IGetZrList.html","topicUid":"Hi.Geom.IGetZrList","type":"Interface"},{"name":"IStlSource","href":"Hi.Geom.IStlSource.html","topicHref":"Hi.Geom.IStlSource.html","topicUid":"Hi.Geom.IStlSource","type":"Interface"},{"name":"ITri3d","href":"Hi.Geom.ITri3d.html","topicHref":"Hi.Geom.ITri3d.html","topicUid":"Hi.Geom.ITri3d","type":"Interface"},{"name":"IVec","href":"Hi.Geom.IVec-1.html","topicHref":"Hi.Geom.IVec-1.html","topicUid":"Hi.Geom.IVec`1","type":"Interface"},{"name":"IZrListSourceProperty","href":"Hi.Geom.IZrListSourceProperty.html","topicHref":"Hi.Geom.IZrListSourceProperty.html","topicUid":"Hi.Geom.IZrListSourceProperty","type":"Interface"},{"name":"Mat4d","href":"Hi.Geom.Mat4d.html","topicHref":"Hi.Geom.Mat4d.html","topicUid":"Hi.Geom.Mat4d","type":"Class"},{"name":"Mat4d.IndexFlag","href":"Hi.Geom.Mat4d.IndexFlag.html","topicHref":"Hi.Geom.Mat4d.IndexFlag.html","topicUid":"Hi.Geom.Mat4d.IndexFlag","type":"Enum"},{"name":"MathNetUtil","href":"Hi.Geom.MathNetUtil.html","topicHref":"Hi.Geom.MathNetUtil.html","topicUid":"Hi.Geom.MathNetUtil","type":"Class"},{"name":"MathUtil","href":"Hi.Geom.MathUtil.html","topicHref":"Hi.Geom.MathUtil.html","topicUid":"Hi.Geom.MathUtil","type":"Class"},{"name":"NativeFraction","href":"Hi.Geom.NativeFraction.html","topicHref":"Hi.Geom.NativeFraction.html","topicUid":"Hi.Geom.NativeFraction","type":"Class"},{"name":"NativeStl","href":"Hi.Geom.NativeStl.html","topicHref":"Hi.Geom.NativeStl.html","topicUid":"Hi.Geom.NativeStl","type":"Class"},{"name":"NativeTopoStld","href":"Hi.Geom.NativeTopoStld.html","topicHref":"Hi.Geom.NativeTopoStld.html","topicUid":"Hi.Geom.NativeTopoStld","type":"Class"},{"name":"NativeTopoStlfr","href":"Hi.Geom.NativeTopoStlfr.html","topicHref":"Hi.Geom.NativeTopoStlfr.html","topicUid":"Hi.Geom.NativeTopoStlfr","type":"Class"},{"name":"ObjUtil","href":"Hi.Geom.ObjUtil.html","topicHref":"Hi.Geom.ObjUtil.html","topicUid":"Hi.Geom.ObjUtil","type":"Class"},{"name":"PairZr","href":"Hi.Geom.PairZr.html","topicHref":"Hi.Geom.PairZr.html","topicUid":"Hi.Geom.PairZr","type":"Class"},{"name":"PairZrUtil","href":"Hi.Geom.PairZrUtil.html","topicHref":"Hi.Geom.PairZrUtil.html","topicUid":"Hi.Geom.PairZrUtil","type":"Class"},{"name":"PlyUtil","href":"Hi.Geom.PlyUtil.html","topicHref":"Hi.Geom.PlyUtil.html","topicUid":"Hi.Geom.PlyUtil","type":"Class"},{"name":"Polar3d","href":"Hi.Geom.Polar3d.html","topicHref":"Hi.Geom.Polar3d.html","topicUid":"Hi.Geom.Polar3d","type":"Class"},{"name":"Segment3d","href":"Hi.Geom.Segment3d.html","topicHref":"Hi.Geom.Segment3d.html","topicUid":"Hi.Geom.Segment3d","type":"Class"},{"name":"Stl","href":"Hi.Geom.Stl.html","topicHref":"Hi.Geom.Stl.html","topicUid":"Hi.Geom.Stl","type":"Class"},{"name":"Stl.StlType","href":"Hi.Geom.Stl.StlType.html","topicHref":"Hi.Geom.Stl.StlType.html","topicUid":"Hi.Geom.Stl.StlType","type":"Enum"},{"name":"StlFile","href":"Hi.Geom.StlFile.html","topicHref":"Hi.Geom.StlFile.html","topicUid":"Hi.Geom.StlFile","type":"Class"},{"name":"StlFuncHost","href":"Hi.Geom.StlFuncHost.html","topicHref":"Hi.Geom.StlFuncHost.html","topicUid":"Hi.Geom.StlFuncHost","type":"Class"},{"name":"StlUtil","href":"Hi.Geom.StlUtil.html","topicHref":"Hi.Geom.StlUtil.html","topicUid":"Hi.Geom.StlUtil","type":"Class"},{"name":"TransformationGeom","href":"Hi.Geom.TransformationGeom.html","topicHref":"Hi.Geom.TransformationGeom.html","topicUid":"Hi.Geom.TransformationGeom","type":"Class"},{"name":"Tri3d","href":"Hi.Geom.Tri3d.html","topicHref":"Hi.Geom.Tri3d.html","topicUid":"Hi.Geom.Tri3d","type":"Class"},{"name":"Tri3dUtil","href":"Hi.Geom.Tri3dUtil.html","topicHref":"Hi.Geom.Tri3dUtil.html","topicUid":"Hi.Geom.Tri3dUtil","type":"Class"},{"name":"Vec2d","href":"Hi.Geom.Vec2d.html","topicHref":"Hi.Geom.Vec2d.html","topicUid":"Hi.Geom.Vec2d","type":"Class"},{"name":"Vec2i","href":"Hi.Geom.Vec2i.html","topicHref":"Hi.Geom.Vec2i.html","topicUid":"Hi.Geom.Vec2i","type":"Class"},{"name":"Vec3d","href":"Hi.Geom.Vec3d.html","topicHref":"Hi.Geom.Vec3d.html","topicUid":"Hi.Geom.Vec3d","type":"Class"}]},{"name":"Hi.Geom.Resolution","href":"Hi.Geom.Resolution.html","topicHref":"Hi.Geom.Resolution.html","topicUid":"Hi.Geom.Resolution","type":"Namespace","items":[{"name":"IPolarResolution2d","href":"Hi.Geom.Resolution.IPolarResolution2d.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2d.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2d","type":"Interface"},{"name":"IPolarResolution2dSourceProperty","href":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty","type":"Interface"},{"name":"PolarResolution2d","href":"Hi.Geom.Resolution.PolarResolution2d.html","topicHref":"Hi.Geom.Resolution.PolarResolution2d.html","topicUid":"Hi.Geom.Resolution.PolarResolution2d","type":"Class"}]},{"name":"Hi.Geom.Solvers","href":"Hi.Geom.Solvers.html","topicHref":"Hi.Geom.Solvers.html","topicUid":"Hi.Geom.Solvers","type":"Namespace","items":[{"name":"BinarySolverUtil","href":"Hi.Geom.Solvers.BinarySolverUtil.html","topicHref":"Hi.Geom.Solvers.BinarySolverUtil.html","topicUid":"Hi.Geom.Solvers.BinarySolverUtil","type":"Class"},{"name":"BinarySolvingEntry","href":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicHref":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicUid":"Hi.Geom.Solvers.BinarySolvingEntry","type":"Class"},{"name":"DeepSolvingStatus","href":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicHref":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicUid":"Hi.Geom.Solvers.DeepSolvingStatus","type":"Class"},{"name":"NumericalSolver","href":"Hi.Geom.Solvers.NumericalSolver.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.html","topicUid":"Hi.Geom.Solvers.NumericalSolver","type":"Class"},{"name":"NumericalSolver.GetRepondsDelegate","href":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate","type":"Delegate"},{"name":"NumericalSolver.SetParasDelegate","href":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate","type":"Delegate"},{"name":"SolverUtil","href":"Hi.Geom.Solvers.SolverUtil.html","topicHref":"Hi.Geom.Solvers.SolverUtil.html","topicUid":"Hi.Geom.Solvers.SolverUtil","type":"Class"},{"name":"SolvingResult","href":"Hi.Geom.Solvers.SolvingResult.html","topicHref":"Hi.Geom.Solvers.SolvingResult.html","topicUid":"Hi.Geom.Solvers.SolvingResult","type":"Class"},{"name":"SolvingStatus","href":"Hi.Geom.Solvers.SolvingStatus.html","topicHref":"Hi.Geom.Solvers.SolvingStatus.html","topicUid":"Hi.Geom.Solvers.SolvingStatus","type":"Enum"},{"name":"SolvingTerm","href":"Hi.Geom.Solvers.SolvingTerm.html","topicHref":"Hi.Geom.Solvers.SolvingTerm.html","topicUid":"Hi.Geom.Solvers.SolvingTerm","type":"Enum"}]},{"name":"Hi.Geom.Topo","href":"Hi.Geom.Topo.html","topicHref":"Hi.Geom.Topo.html","topicUid":"Hi.Geom.Topo","type":"Namespace","items":[{"name":"TopoLine3Hfr","href":"Hi.Geom.Topo.TopoLine3Hfr.html","topicHref":"Hi.Geom.Topo.TopoLine3Hfr.html","topicUid":"Hi.Geom.Topo.TopoLine3Hfr","type":"Class"},{"name":"TopoLine3StockHfr","href":"Hi.Geom.Topo.TopoLine3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoLine3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoLine3StockHfr","type":"Class"},{"name":"TopoPoint3Hfr","href":"Hi.Geom.Topo.TopoPoint3Hfr.html","topicHref":"Hi.Geom.Topo.TopoPoint3Hfr.html","topicUid":"Hi.Geom.Topo.TopoPoint3Hfr","type":"Class"},{"name":"TopoPoint3StockHfr","href":"Hi.Geom.Topo.TopoPoint3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoPoint3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoPoint3StockHfr","type":"Class"},{"name":"TopoStl3Hfr","href":"Hi.Geom.Topo.TopoStl3Hfr.html","topicHref":"Hi.Geom.Topo.TopoStl3Hfr.html","topicUid":"Hi.Geom.Topo.TopoStl3Hfr","type":"Class"},{"name":"TopoStl3HfrFlatDisplayee","href":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html","topicHref":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html","topicUid":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee","type":"Class"},{"name":"TopoStl3HfrSmoothDisplayee","href":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html","topicHref":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html","topicUid":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee","type":"Class"},{"name":"TopoTri3Hfr","href":"Hi.Geom.Topo.TopoTri3Hfr.html","topicHref":"Hi.Geom.Topo.TopoTri3Hfr.html","topicUid":"Hi.Geom.Topo.TopoTri3Hfr","type":"Class"},{"name":"TopoTri3StockHfr","href":"Hi.Geom.Topo.TopoTri3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoTri3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoTri3StockHfr","type":"Class"},{"name":"Vec3Hfr","href":"Hi.Geom.Topo.Vec3Hfr.html","topicHref":"Hi.Geom.Topo.Vec3Hfr.html","topicUid":"Hi.Geom.Topo.Vec3Hfr","type":"Struct"}]},{"name":"Hi.Geom.UnitUtils","href":"Hi.Geom.UnitUtils.html","topicHref":"Hi.Geom.UnitUtils.html","topicUid":"Hi.Geom.UnitUtils","type":"Namespace","items":[{"name":"PhysicsUnit","href":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicHref":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicUid":"Hi.Geom.UnitUtils.PhysicsUnit","type":"Enum"},{"name":"StringValueAttribute","href":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicHref":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicUid":"Hi.Geom.UnitUtils.StringValueAttribute","type":"Class"},{"name":"UnitConvertUtil","href":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicHref":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicUid":"Hi.Geom.UnitUtils.UnitConvertUtil","type":"Class"}]},{"name":"Hi.Grpcs","href":"Hi.Grpcs.html","topicHref":"Hi.Grpcs.html","topicUid":"Hi.Grpcs","type":"Namespace","items":[{"name":"ClStripService","href":"Hi.Grpcs.ClStripService.html","topicHref":"Hi.Grpcs.ClStripService.html","topicUid":"Hi.Grpcs.ClStripService","type":"Class"},{"name":"ClStripService.ClStripServiceBase","href":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceBase","type":"Class"},{"name":"ClStripService.ClStripServiceClient","href":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceClient","type":"Class"},{"name":"ClStripServiceReflection","href":"Hi.Grpcs.ClStripServiceReflection.html","topicHref":"Hi.Grpcs.ClStripServiceReflection.html","topicUid":"Hi.Grpcs.ClStripServiceReflection","type":"Class"},{"name":"ClStripServiceRunner","href":"Hi.Grpcs.ClStripServiceRunner.html","topicHref":"Hi.Grpcs.ClStripServiceRunner.html","topicUid":"Hi.Grpcs.ClStripServiceRunner","type":"Class"},{"name":"DictionaryStep","href":"Hi.Grpcs.DictionaryStep.html","topicHref":"Hi.Grpcs.DictionaryStep.html","topicUid":"Hi.Grpcs.DictionaryStep","type":"Class"},{"name":"PlayerService","href":"Hi.Grpcs.PlayerService.html","topicHref":"Hi.Grpcs.PlayerService.html","topicUid":"Hi.Grpcs.PlayerService","type":"Class"},{"name":"PlayerService.PlayerServiceBase","href":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceBase","type":"Class"},{"name":"PlayerService.PlayerServiceClient","href":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceClient","type":"Class"},{"name":"PlayerServiceReflection","href":"Hi.Grpcs.PlayerServiceReflection.html","topicHref":"Hi.Grpcs.PlayerServiceReflection.html","topicUid":"Hi.Grpcs.PlayerServiceReflection","type":"Class"},{"name":"PlayerServiceRunner","href":"Hi.Grpcs.PlayerServiceRunner.html","topicHref":"Hi.Grpcs.PlayerServiceRunner.html","topicUid":"Hi.Grpcs.PlayerServiceRunner","type":"Class"}]},{"name":"Hi.HiNcKits","href":"Hi.HiNcKits.html","topicHref":"Hi.HiNcKits.html","topicUid":"Hi.HiNcKits","type":"Namespace","items":[{"name":"BasePathEnum","href":"Hi.HiNcKits.BasePathEnum.html","topicHref":"Hi.HiNcKits.BasePathEnum.html","topicUid":"Hi.HiNcKits.BasePathEnum","type":"Enum"},{"name":"HiNcHost","href":"Hi.HiNcKits.HiNcHost.html","topicHref":"Hi.HiNcKits.HiNcHost.html","topicUid":"Hi.HiNcKits.HiNcHost","type":"Class"},{"name":"LocalApp","href":"Hi.HiNcKits.LocalApp.html","topicHref":"Hi.HiNcKits.LocalApp.html","topicUid":"Hi.HiNcKits.LocalApp","type":"Class"},{"name":"LocalAppConfig","href":"Hi.HiNcKits.LocalAppConfig.html","topicHref":"Hi.HiNcKits.LocalAppConfig.html","topicUid":"Hi.HiNcKits.LocalAppConfig","type":"Class"},{"name":"PlayerDivConfig","href":"Hi.HiNcKits.PlayerDivConfig.html","topicHref":"Hi.HiNcKits.PlayerDivConfig.html","topicUid":"Hi.HiNcKits.PlayerDivConfig","type":"Class"},{"name":"ProxyConfig","href":"Hi.HiNcKits.ProxyConfig.html","topicHref":"Hi.HiNcKits.ProxyConfig.html","topicUid":"Hi.HiNcKits.ProxyConfig","type":"Class"},{"name":"UserConfig","href":"Hi.HiNcKits.UserConfig.html","topicHref":"Hi.HiNcKits.UserConfig.html","topicUid":"Hi.HiNcKits.UserConfig","type":"Class"},{"name":"UserService","href":"Hi.HiNcKits.UserService.html","topicHref":"Hi.HiNcKits.UserService.html","topicUid":"Hi.HiNcKits.UserService","type":"Class"}]},{"name":"Hi.Licenses","href":"Hi.Licenses.html","topicHref":"Hi.Licenses.html","topicUid":"Hi.Licenses","type":"Namespace","items":[{"name":"AuthFeature","href":"Hi.Licenses.AuthFeature.html","topicHref":"Hi.Licenses.AuthFeature.html","topicUid":"Hi.Licenses.AuthFeature","type":"Enum"},{"name":"AuthorizationFailedEventArgs","href":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicHref":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicUid":"Hi.Licenses.AuthorizationFailedEventArgs","type":"Class"},{"name":"BlockType","href":"Hi.Licenses.BlockType.html","topicHref":"Hi.Licenses.BlockType.html","topicUid":"Hi.Licenses.BlockType","type":"Enum"},{"name":"License","href":"Hi.Licenses.License.html","topicHref":"Hi.Licenses.License.html","topicUid":"Hi.Licenses.License","type":"Class"},{"name":"LicenseType","href":"Hi.Licenses.LicenseType.html","topicHref":"Hi.Licenses.LicenseType.html","topicUid":"Hi.Licenses.LicenseType","type":"Enum"}]},{"name":"Hi.Machining","href":"Hi.Machining.html","topicHref":"Hi.Machining.html","topicUid":"Hi.Machining","type":"Namespace","items":[{"name":"FreeformRemover","href":"Hi.Machining.FreeformRemover.html","topicHref":"Hi.Machining.FreeformRemover.html","topicUid":"Hi.Machining.FreeformRemover","type":"Class"},{"name":"ICutter","href":"Hi.Machining.ICutter.html","topicHref":"Hi.Machining.ICutter.html","topicUid":"Hi.Machining.ICutter","type":"Interface"},{"name":"ICutterAnchorable","href":"Hi.Machining.ICutterAnchorable.html","topicHref":"Hi.Machining.ICutterAnchorable.html","topicUid":"Hi.Machining.ICutterAnchorable","type":"Interface"},{"name":"IGetSweptable","href":"Hi.Machining.IGetSweptable.html","topicHref":"Hi.Machining.IGetSweptable.html","topicUid":"Hi.Machining.IGetSweptable","type":"Interface"},{"name":"IMachiningTool","href":"Hi.Machining.IMachiningTool.html","topicHref":"Hi.Machining.IMachiningTool.html","topicUid":"Hi.Machining.IMachiningTool","type":"Interface"},{"name":"IVolumeRemover","href":"Hi.Machining.IVolumeRemover.html","topicHref":"Hi.Machining.IVolumeRemover.html","topicUid":"Hi.Machining.IVolumeRemover","type":"Interface"},{"name":"MachiningToolHouse","href":"Hi.Machining.MachiningToolHouse.html","topicHref":"Hi.Machining.MachiningToolHouse.html","topicUid":"Hi.Machining.MachiningToolHouse","type":"Class"},{"name":"MachiningVolumeRemovalProc","href":"Hi.Machining.MachiningVolumeRemovalProc.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc","type":"Class"},{"name":"MachiningVolumeRemovalProc.StepMotionSnapshot","href":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot","type":"Class"},{"name":"MatInterpolationKit","href":"Hi.Machining.MatInterpolationKit.html","topicHref":"Hi.Machining.MatInterpolationKit.html","topicUid":"Hi.Machining.MatInterpolationKit","type":"Class"},{"name":"MatRelation","href":"Hi.Machining.MatRelation.html","topicHref":"Hi.Machining.MatRelation.html","topicUid":"Hi.Machining.MatRelation","type":"Enum"},{"name":"MatRelationUtil","href":"Hi.Machining.MatRelationUtil.html","topicHref":"Hi.Machining.MatRelationUtil.html","topicUid":"Hi.Machining.MatRelationUtil","type":"Class"},{"name":"Sweptable","href":"Hi.Machining.Sweptable.html","topicHref":"Hi.Machining.Sweptable.html","topicUid":"Hi.Machining.Sweptable","type":"Class"},{"name":"SweptableUtil","href":"Hi.Machining.SweptableUtil.html","topicHref":"Hi.Machining.SweptableUtil.html","topicUid":"Hi.Machining.SweptableUtil","type":"Class"},{"name":"ToolNotFoundException","href":"Hi.Machining.ToolNotFoundException.html","topicHref":"Hi.Machining.ToolNotFoundException.html","topicUid":"Hi.Machining.ToolNotFoundException","type":"Class"}]},{"name":"Hi.Machining.MachiningEquipmentUtils","href":"Hi.Machining.MachiningEquipmentUtils.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.html","topicUid":"Hi.Machining.MachiningEquipmentUtils","type":"Namespace","items":[{"name":"CollidableComponentEnum","href":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum","type":"Enum"},{"name":"IGetMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment","type":"Interface"},{"name":"IMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment","type":"Interface"},{"name":"MachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment","type":"Class"},{"name":"MachiningEquipmentCollisionIndex","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex","type":"Class"},{"name":"MachiningEquipmentCollisionIndexPairsSource","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource","type":"Class"},{"name":"MachiningEquipmentUtil","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil","type":"Class"}]},{"name":"Hi.MachiningProcs","href":"Hi.MachiningProcs.html","topicHref":"Hi.MachiningProcs.html","topicUid":"Hi.MachiningProcs","type":"Namespace","items":[{"name":"ConfigStepFunc","href":"Hi.MachiningProcs.ConfigStepFunc.html","topicHref":"Hi.MachiningProcs.ConfigStepFunc.html","topicUid":"Hi.MachiningProcs.ConfigStepFunc","type":"Delegate"},{"name":"IMachiningProjectGetter","href":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicHref":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicUid":"Hi.MachiningProcs.IMachiningProjectGetter","type":"Interface"},{"name":"IProjectService","href":"Hi.MachiningProcs.IProjectService.html","topicHref":"Hi.MachiningProcs.IProjectService.html","topicUid":"Hi.MachiningProcs.IProjectService","type":"Interface"},{"name":"LocalProjectService","href":"Hi.MachiningProcs.LocalProjectService.html","topicHref":"Hi.MachiningProcs.LocalProjectService.html","topicUid":"Hi.MachiningProcs.LocalProjectService","type":"Class"},{"name":"LocalProjectService.MachiningProjectChangedDelegate","href":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicHref":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicUid":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate","type":"Delegate"},{"name":"MachiningActRunner","href":"Hi.MachiningProcs.MachiningActRunner.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.html","topicUid":"Hi.MachiningProcs.MachiningActRunner","type":"Class"},{"name":"MachiningActRunner.MachiningStepBuiltDelegate","href":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicUid":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate","type":"Delegate"},{"name":"MachiningActRunnerConfig","href":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicHref":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicUid":"Hi.MachiningProcs.MachiningActRunnerConfig","type":"Class"},{"name":"MachiningParallelProc","href":"Hi.MachiningProcs.MachiningParallelProc.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc","type":"Class"},{"name":"MachiningParallelProc.StepTaskBundle","href":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle","type":"Class"},{"name":"MachiningParallelProc.SubstractionResult","href":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult","type":"Class"},{"name":"MachiningProject","href":"Hi.MachiningProcs.MachiningProject.html","topicHref":"Hi.MachiningProcs.MachiningProject.html","topicUid":"Hi.MachiningProcs.MachiningProject","type":"Class"},{"name":"MachiningProjectDisplayee","href":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicHref":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicUid":"Hi.MachiningProcs.MachiningProjectDisplayee","type":"Class"},{"name":"MachiningSession","href":"Hi.MachiningProcs.MachiningSession.html","topicHref":"Hi.MachiningProcs.MachiningSession.html","topicUid":"Hi.MachiningProcs.MachiningSession","type":"Class"},{"name":"MillingUtil","href":"Hi.MachiningProcs.MillingUtil.html","topicHref":"Hi.MachiningProcs.MillingUtil.html","topicUid":"Hi.MachiningProcs.MillingUtil","type":"Class"},{"name":"NcRunnerSessionState","href":"Hi.MachiningProcs.NcRunnerSessionState.html","topicHref":"Hi.MachiningProcs.NcRunnerSessionState.html","topicUid":"Hi.MachiningProcs.NcRunnerSessionState","type":"Class"},{"name":"ProxyProjectService","href":"Hi.MachiningProcs.ProxyProjectService.html","topicHref":"Hi.MachiningProcs.ProxyProjectService.html","topicUid":"Hi.MachiningProcs.ProxyProjectService","type":"Class"},{"name":"RenderingFlag","href":"Hi.MachiningProcs.RenderingFlag.html","topicHref":"Hi.MachiningProcs.RenderingFlag.html","topicUid":"Hi.MachiningProcs.RenderingFlag","type":"Enum"},{"name":"SessionMessage","href":"Hi.MachiningProcs.SessionMessage.html","topicHref":"Hi.MachiningProcs.SessionMessage.html","topicUid":"Hi.MachiningProcs.SessionMessage","type":"Class"},{"name":"SessionMessagePack","href":"Hi.MachiningProcs.SessionMessagePack.html","topicHref":"Hi.MachiningProcs.SessionMessagePack.html","topicUid":"Hi.MachiningProcs.SessionMessagePack","type":"Class"},{"name":"SessionProgress","href":"Hi.MachiningProcs.SessionProgress.html","topicHref":"Hi.MachiningProcs.SessionProgress.html","topicUid":"Hi.MachiningProcs.SessionProgress","type":"Class"},{"name":"SessionProgress.FilterFlag","href":"Hi.MachiningProcs.SessionProgress.FilterFlag.html","topicHref":"Hi.MachiningProcs.SessionProgress.FilterFlag.html","topicUid":"Hi.MachiningProcs.SessionProgress.FilterFlag","type":"Enum"},{"name":"SessionShell","href":"Hi.MachiningProcs.SessionShell.html","topicHref":"Hi.MachiningProcs.SessionShell.html","topicUid":"Hi.MachiningProcs.SessionShell","type":"Class"},{"name":"SessionShellController","href":"Hi.MachiningProcs.SessionShellController.html","topicHref":"Hi.MachiningProcs.SessionShellController.html","topicUid":"Hi.MachiningProcs.SessionShellController","type":"Class"},{"name":"SetupController","href":"Hi.MachiningProcs.SetupController.html","topicHref":"Hi.MachiningProcs.SetupController.html","topicUid":"Hi.MachiningProcs.SetupController","type":"Class"},{"name":"SpindleSpeedCache","href":"Hi.MachiningProcs.SpindleSpeedCache.html","topicHref":"Hi.MachiningProcs.SpindleSpeedCache.html","topicUid":"Hi.MachiningProcs.SpindleSpeedCache","type":"Class"}]},{"name":"Hi.MachiningSteps","href":"Hi.MachiningSteps.html","topicHref":"Hi.MachiningSteps.html","topicUid":"Hi.MachiningSteps","type":"Namespace","items":[{"name":"IFlagText","href":"Hi.MachiningSteps.IFlagText.html","topicHref":"Hi.MachiningSteps.IFlagText.html","topicUid":"Hi.MachiningSteps.IFlagText","type":"Interface"},{"name":"IMachiningService","href":"Hi.MachiningSteps.IMachiningService.html","topicHref":"Hi.MachiningSteps.IMachiningService.html","topicUid":"Hi.MachiningSteps.IMachiningService","type":"Interface"},{"name":"MachineMotionStep","href":"Hi.MachiningSteps.MachineMotionStep.html","topicHref":"Hi.MachiningSteps.MachineMotionStep.html","topicUid":"Hi.MachiningSteps.MachineMotionStep","type":"Class"},{"name":"MachiningStep","href":"Hi.MachiningSteps.MachiningStep.html","topicHref":"Hi.MachiningSteps.MachiningStep.html","topicUid":"Hi.MachiningSteps.MachiningStep","type":"Class"},{"name":"MachiningStep.CollidedKeyPair","href":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicHref":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicUid":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair","type":"Class"},{"name":"MachiningStepUtil","href":"Hi.MachiningSteps.MachiningStepUtil.html","topicHref":"Hi.MachiningSteps.MachiningStepUtil.html","topicUid":"Hi.MachiningSteps.MachiningStepUtil","type":"Class"},{"name":"PresentAccess","href":"Hi.MachiningSteps.PresentAccess.html","topicHref":"Hi.MachiningSteps.PresentAccess.html","topicUid":"Hi.MachiningSteps.PresentAccess","type":"Class"},{"name":"PresentAttribute","href":"Hi.MachiningSteps.PresentAttribute.html","topicHref":"Hi.MachiningSteps.PresentAttribute.html","topicUid":"Hi.MachiningSteps.PresentAttribute","type":"Class"},{"name":"PropertyAccess","href":"Hi.MachiningSteps.PropertyAccess-1.html","topicHref":"Hi.MachiningSteps.PropertyAccess-1.html","topicUid":"Hi.MachiningSteps.PropertyAccess`1","type":"Class"}]},{"name":"Hi.Mapping","href":"Hi.Mapping.html","topicHref":"Hi.Mapping.html","topicUid":"Hi.Mapping","type":"Namespace","items":[{"name":"CsvNcStep","href":"Hi.Mapping.CsvNcStep.html","topicHref":"Hi.Mapping.CsvNcStep.html","topicUid":"Hi.Mapping.CsvNcStep","type":"Class"},{"name":"FileToTimeShotMapping","href":"Hi.Mapping.FileToTimeShotMapping.html","topicHref":"Hi.Mapping.FileToTimeShotMapping.html","topicUid":"Hi.Mapping.FileToTimeShotMapping","type":"Class"},{"name":"IAccelerationShot","href":"Hi.Mapping.IAccelerationShot.html","topicHref":"Hi.Mapping.IAccelerationShot.html","topicUid":"Hi.Mapping.IAccelerationShot","type":"Interface"},{"name":"IForceShot","href":"Hi.Mapping.IForceShot.html","topicHref":"Hi.Mapping.IForceShot.html","topicUid":"Hi.Mapping.IForceShot","type":"Interface"},{"name":"IMomentShot","href":"Hi.Mapping.IMomentShot.html","topicHref":"Hi.Mapping.IMomentShot.html","topicUid":"Hi.Mapping.IMomentShot","type":"Interface"},{"name":"ITimeShot","href":"Hi.Mapping.ITimeShot.html","topicHref":"Hi.Mapping.ITimeShot.html","topicUid":"Hi.Mapping.ITimeShot","type":"Interface"},{"name":"MappingUtil","href":"Hi.Mapping.MappingUtil.html","topicHref":"Hi.Mapping.MappingUtil.html","topicUid":"Hi.Mapping.MappingUtil","type":"Class"},{"name":"StepTimeShotUtil","href":"Hi.Mapping.StepTimeShotUtil.html","topicHref":"Hi.Mapping.StepTimeShotUtil.html","topicUid":"Hi.Mapping.StepTimeShotUtil","type":"Class"},{"name":"StepTimeShotUtil.CycleSamplingMode","href":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicHref":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicUid":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode","type":"Enum"},{"name":"StepTimeShotUtil.GetTimeShotByFileDelegate","href":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicHref":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicUid":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate","type":"Delegate"},{"name":"TimeMapping","href":"Hi.Mapping.TimeMapping.html","topicHref":"Hi.Mapping.TimeMapping.html","topicUid":"Hi.Mapping.TimeMapping","type":"Class"}]},{"name":"Hi.Mappings","href":"Hi.Mappings.html","topicHref":"Hi.Mappings.html","topicUid":"Hi.Mappings","type":"Namespace","items":[{"name":"FileTimeSection","href":"Hi.Mappings.FileTimeSection.html","topicHref":"Hi.Mappings.FileTimeSection.html","topicUid":"Hi.Mappings.FileTimeSection","type":"Class"},{"name":"FileTimeSection.TimeOption","href":"Hi.Mappings.FileTimeSection.TimeOption.html","topicHref":"Hi.Mappings.FileTimeSection.TimeOption.html","topicUid":"Hi.Mappings.FileTimeSection.TimeOption","type":"Enum"}]},{"name":"Hi.Mech","href":"Hi.Mech.html","topicHref":"Hi.Mech.html","topicUid":"Hi.Mech","type":"Namespace","items":[{"name":"GeneralMechanism","href":"Hi.Mech.GeneralMechanism.html","topicHref":"Hi.Mech.GeneralMechanism.html","topicUid":"Hi.Mech.GeneralMechanism","type":"Class"},{"name":"IGetAnchorToSolidDictionary","href":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicHref":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicUid":"Hi.Mech.IGetAnchorToSolidDictionary","type":"Interface"},{"name":"IGetMachiningChain","href":"Hi.Mech.IGetMachiningChain.html","topicHref":"Hi.Mech.IGetMachiningChain.html","topicUid":"Hi.Mech.IGetMachiningChain","type":"Interface"},{"name":"IMachiningChain","href":"Hi.Mech.IMachiningChain.html","topicHref":"Hi.Mech.IMachiningChain.html","topicUid":"Hi.Mech.IMachiningChain","type":"Interface"},{"name":"IMachiningChainSource","href":"Hi.Mech.IMachiningChainSource.html","topicHref":"Hi.Mech.IMachiningChainSource.html","topicUid":"Hi.Mech.IMachiningChainSource","type":"Interface"},{"name":"MachiningChainUtil","href":"Hi.Mech.MachiningChainUtil.html","topicHref":"Hi.Mech.MachiningChainUtil.html","topicUid":"Hi.Mech.MachiningChainUtil","type":"Class"}]},{"name":"Hi.Mech.Topo","href":"Hi.Mech.Topo.html","topicHref":"Hi.Mech.Topo.html","topicUid":"Hi.Mech.Topo","type":"Namespace","items":[{"name":"Anchor","href":"Hi.Mech.Topo.Anchor.html","topicHref":"Hi.Mech.Topo.Anchor.html","topicUid":"Hi.Mech.Topo.Anchor","type":"Class"},{"name":"AnchorFuncSource","href":"Hi.Mech.Topo.AnchorFuncSource.html","topicHref":"Hi.Mech.Topo.AnchorFuncSource.html","topicUid":"Hi.Mech.Topo.AnchorFuncSource","type":"Class"},{"name":"AnchoredBoxable","href":"Hi.Mech.Topo.AnchoredBoxable.html","topicHref":"Hi.Mech.Topo.AnchoredBoxable.html","topicUid":"Hi.Mech.Topo.AnchoredBoxable","type":"Class"},{"name":"AnchoredDisplayee","href":"Hi.Mech.Topo.AnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.AnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.AnchoredDisplayee","type":"Class"},{"name":"Asmb","href":"Hi.Mech.Topo.Asmb.html","topicHref":"Hi.Mech.Topo.Asmb.html","topicUid":"Hi.Mech.Topo.Asmb","type":"Class"},{"name":"AsmbDraw","href":"Hi.Mech.Topo.AsmbDraw.html","topicHref":"Hi.Mech.Topo.AsmbDraw.html","topicUid":"Hi.Mech.Topo.AsmbDraw","type":"Class"},{"name":"Branch","href":"Hi.Mech.Topo.Branch.html","topicHref":"Hi.Mech.Topo.Branch.html","topicUid":"Hi.Mech.Topo.Branch","type":"Class"},{"name":"DirectionBranchEntry","href":"Hi.Mech.Topo.DirectionBranchEntry.html","topicHref":"Hi.Mech.Topo.DirectionBranchEntry.html","topicUid":"Hi.Mech.Topo.DirectionBranchEntry","type":"Class"},{"name":"DirectionBranchPackUtil","href":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicHref":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicUid":"Hi.Mech.Topo.DirectionBranchPackUtil","type":"Class"},{"name":"DynamicFreeform","href":"Hi.Mech.Topo.DynamicFreeform.html","topicHref":"Hi.Mech.Topo.DynamicFreeform.html","topicUid":"Hi.Mech.Topo.DynamicFreeform","type":"Class"},{"name":"DynamicRotation","href":"Hi.Mech.Topo.DynamicRotation.html","topicHref":"Hi.Mech.Topo.DynamicRotation.html","topicUid":"Hi.Mech.Topo.DynamicRotation","type":"Class"},{"name":"DynamicTranslation","href":"Hi.Mech.Topo.DynamicTranslation.html","topicHref":"Hi.Mech.Topo.DynamicTranslation.html","topicUid":"Hi.Mech.Topo.DynamicTranslation","type":"Class"},{"name":"GeneralTransform","href":"Hi.Mech.Topo.GeneralTransform.html","topicHref":"Hi.Mech.Topo.GeneralTransform.html","topicUid":"Hi.Mech.Topo.GeneralTransform","type":"Class"},{"name":"IAnchoredDisplayee","href":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.IAnchoredDisplayee","type":"Interface"},{"name":"IDynamicRegular","href":"Hi.Mech.Topo.IDynamicRegular.html","topicHref":"Hi.Mech.Topo.IDynamicRegular.html","topicUid":"Hi.Mech.Topo.IDynamicRegular","type":"Interface"},{"name":"IDynamicRotation","href":"Hi.Mech.Topo.IDynamicRotation.html","topicHref":"Hi.Mech.Topo.IDynamicRotation.html","topicUid":"Hi.Mech.Topo.IDynamicRotation","type":"Interface"},{"name":"IDynamicTransformer","href":"Hi.Mech.Topo.IDynamicTransformer.html","topicHref":"Hi.Mech.Topo.IDynamicTransformer.html","topicUid":"Hi.Mech.Topo.IDynamicTransformer","type":"Interface"},{"name":"IGetAnchor","href":"Hi.Mech.Topo.IGetAnchor.html","topicHref":"Hi.Mech.Topo.IGetAnchor.html","topicUid":"Hi.Mech.Topo.IGetAnchor","type":"Interface"},{"name":"IGetAnchoredDisplayeeList","href":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicHref":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicUid":"Hi.Mech.Topo.IGetAnchoredDisplayeeList","type":"Interface"},{"name":"IGetAsmb","href":"Hi.Mech.Topo.IGetAsmb.html","topicHref":"Hi.Mech.Topo.IGetAsmb.html","topicUid":"Hi.Mech.Topo.IGetAsmb","type":"Interface"},{"name":"IGetFletchBuckle","href":"Hi.Mech.Topo.IGetFletchBuckle.html","topicHref":"Hi.Mech.Topo.IGetFletchBuckle.html","topicUid":"Hi.Mech.Topo.IGetFletchBuckle","type":"Interface"},{"name":"IGetInverseTransformer","href":"Hi.Mech.Topo.IGetInverseTransformer.html","topicHref":"Hi.Mech.Topo.IGetInverseTransformer.html","topicUid":"Hi.Mech.Topo.IGetInverseTransformer","type":"Interface"},{"name":"IGetTopoIndex","href":"Hi.Mech.Topo.IGetTopoIndex.html","topicHref":"Hi.Mech.Topo.IGetTopoIndex.html","topicUid":"Hi.Mech.Topo.IGetTopoIndex","type":"Interface"},{"name":"IStaticTransformer","href":"Hi.Mech.Topo.IStaticTransformer.html","topicHref":"Hi.Mech.Topo.IStaticTransformer.html","topicUid":"Hi.Mech.Topo.IStaticTransformer","type":"Interface"},{"name":"ITopo","href":"Hi.Mech.Topo.ITopo.html","topicHref":"Hi.Mech.Topo.ITopo.html","topicUid":"Hi.Mech.Topo.ITopo","type":"Interface"},{"name":"ITopoDisplayee","href":"Hi.Mech.Topo.ITopoDisplayee.html","topicHref":"Hi.Mech.Topo.ITopoDisplayee.html","topicUid":"Hi.Mech.Topo.ITopoDisplayee","type":"Interface"},{"name":"ITransformer","href":"Hi.Mech.Topo.ITransformer.html","topicHref":"Hi.Mech.Topo.ITransformer.html","topicUid":"Hi.Mech.Topo.ITransformer","type":"Interface"},{"name":"ITransformerProperty","href":"Hi.Mech.Topo.ITransformerProperty.html","topicHref":"Hi.Mech.Topo.ITransformerProperty.html","topicUid":"Hi.Mech.Topo.ITransformerProperty","type":"Interface"},{"name":"NoTransform","href":"Hi.Mech.Topo.NoTransform.html","topicHref":"Hi.Mech.Topo.NoTransform.html","topicUid":"Hi.Mech.Topo.NoTransform","type":"Class"},{"name":"StackTransformer","href":"Hi.Mech.Topo.StackTransformer.html","topicHref":"Hi.Mech.Topo.StackTransformer.html","topicUid":"Hi.Mech.Topo.StackTransformer","type":"Class"},{"name":"StaticFreeform","href":"Hi.Mech.Topo.StaticFreeform.html","topicHref":"Hi.Mech.Topo.StaticFreeform.html","topicUid":"Hi.Mech.Topo.StaticFreeform","type":"Class"},{"name":"StaticRotation","href":"Hi.Mech.Topo.StaticRotation.html","topicHref":"Hi.Mech.Topo.StaticRotation.html","topicUid":"Hi.Mech.Topo.StaticRotation","type":"Class"},{"name":"StaticTranslation","href":"Hi.Mech.Topo.StaticTranslation.html","topicHref":"Hi.Mech.Topo.StaticTranslation.html","topicUid":"Hi.Mech.Topo.StaticTranslation","type":"Class"},{"name":"TopoDisplayee","href":"Hi.Mech.Topo.TopoDisplayee.html","topicHref":"Hi.Mech.Topo.TopoDisplayee.html","topicUid":"Hi.Mech.Topo.TopoDisplayee","type":"Class"},{"name":"TopoDisplayeeUtil","href":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicHref":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicUid":"Hi.Mech.Topo.TopoDisplayeeUtil","type":"Class"},{"name":"TopoReflection","href":"Hi.Mech.Topo.TopoReflection.html","topicHref":"Hi.Mech.Topo.TopoReflection.html","topicUid":"Hi.Mech.Topo.TopoReflection","type":"Class"},{"name":"TopoUtil","href":"Hi.Mech.Topo.TopoUtil.html","topicHref":"Hi.Mech.Topo.TopoUtil.html","topicUid":"Hi.Mech.Topo.TopoUtil","type":"Class"},{"name":"TransformerUtil","href":"Hi.Mech.Topo.TransformerUtil.html","topicHref":"Hi.Mech.Topo.TransformerUtil.html","topicUid":"Hi.Mech.Topo.TransformerUtil","type":"Class"}]},{"name":"Hi.Milling","href":"Hi.Milling.html","topicHref":"Hi.Milling.html","topicUid":"Hi.Milling","type":"Namespace","items":[{"name":"IGetDiameter","href":"Hi.Milling.IGetDiameter.html","topicHref":"Hi.Milling.IGetDiameter.html","topicUid":"Hi.Milling.IGetDiameter","type":"Interface"},{"name":"IGetFluteHeight","href":"Hi.Milling.IGetFluteHeight.html","topicHref":"Hi.Milling.IGetFluteHeight.html","topicUid":"Hi.Milling.IGetFluteHeight","type":"Interface"},{"name":"IGetMillingGeomBrief","href":"Hi.Milling.IGetMillingGeomBrief.html","topicHref":"Hi.Milling.IGetMillingGeomBrief.html","topicUid":"Hi.Milling.IGetMillingGeomBrief","type":"Interface"},{"name":"IGetRadialReliefAngle","href":"Hi.Milling.IGetRadialReliefAngle.html","topicHref":"Hi.Milling.IGetRadialReliefAngle.html","topicUid":"Hi.Milling.IGetRadialReliefAngle","type":"Interface"},{"name":"IMillingGeomBriefAccessor","href":"Hi.Milling.IMillingGeomBriefAccessor.html","topicHref":"Hi.Milling.IMillingGeomBriefAccessor.html","topicUid":"Hi.Milling.IMillingGeomBriefAccessor","type":"Interface"},{"name":"MillingGeomBrief","href":"Hi.Milling.MillingGeomBrief.html","topicHref":"Hi.Milling.MillingGeomBrief.html","topicUid":"Hi.Milling.MillingGeomBrief","type":"Class"},{"name":"MillingRemovalUtil","href":"Hi.Milling.MillingRemovalUtil.html","topicHref":"Hi.Milling.MillingRemovalUtil.html","topicUid":"Hi.Milling.MillingRemovalUtil","type":"Class"},{"name":"SpindleCapability","href":"Hi.Milling.SpindleCapability.html","topicHref":"Hi.Milling.SpindleCapability.html","topicUid":"Hi.Milling.SpindleCapability","type":"Class"}]},{"name":"Hi.Milling.Apts","href":"Hi.Milling.Apts.html","topicHref":"Hi.Milling.Apts.html","topicUid":"Hi.Milling.Apts","type":"Namespace","items":[{"name":"AptDerivative","href":"Hi.Milling.Apts.AptDerivative.html","topicHref":"Hi.Milling.Apts.AptDerivative.html","topicUid":"Hi.Milling.Apts.AptDerivative","type":"Class"},{"name":"BallApt","href":"Hi.Milling.Apts.BallApt.html","topicHref":"Hi.Milling.Apts.BallApt.html","topicUid":"Hi.Milling.Apts.BallApt","type":"Class"},{"name":"BullNoseApt","href":"Hi.Milling.Apts.BullNoseApt.html","topicHref":"Hi.Milling.Apts.BullNoseApt.html","topicUid":"Hi.Milling.Apts.BullNoseApt","type":"Class"},{"name":"ColumnApt","href":"Hi.Milling.Apts.ColumnApt.html","topicHref":"Hi.Milling.Apts.ColumnApt.html","topicUid":"Hi.Milling.Apts.ColumnApt","type":"Class"},{"name":"ConeApt","href":"Hi.Milling.Apts.ConeApt.html","topicHref":"Hi.Milling.Apts.ConeApt.html","topicUid":"Hi.Milling.Apts.ConeApt","type":"Class"},{"name":"ExactColumnApt","href":"Hi.Milling.Apts.ExactColumnApt.html","topicHref":"Hi.Milling.Apts.ExactColumnApt.html","topicUid":"Hi.Milling.Apts.ExactColumnApt","type":"Class"},{"name":"GeneralApt","href":"Hi.Milling.Apts.GeneralApt.html","topicHref":"Hi.Milling.Apts.GeneralApt.html","topicUid":"Hi.Milling.Apts.GeneralApt","type":"Class"},{"name":"IAptAlpha","href":"Hi.Milling.Apts.IAptAlpha.html","topicHref":"Hi.Milling.Apts.IAptAlpha.html","topicUid":"Hi.Milling.Apts.IAptAlpha","type":"Interface"},{"name":"IAptBased","href":"Hi.Milling.Apts.IAptBased.html","topicHref":"Hi.Milling.Apts.IAptBased.html","topicUid":"Hi.Milling.Apts.IAptBased","type":"Interface"},{"name":"IAptBeta","href":"Hi.Milling.Apts.IAptBeta.html","topicHref":"Hi.Milling.Apts.IAptBeta.html","topicUid":"Hi.Milling.Apts.IAptBeta","type":"Interface"},{"name":"IAptRc","href":"Hi.Milling.Apts.IAptRc.html","topicHref":"Hi.Milling.Apts.IAptRc.html","topicUid":"Hi.Milling.Apts.IAptRc","type":"Interface"},{"name":"IAptRr","href":"Hi.Milling.Apts.IAptRr.html","topicHref":"Hi.Milling.Apts.IAptRr.html","topicUid":"Hi.Milling.Apts.IAptRr","type":"Interface"},{"name":"IAptRz","href":"Hi.Milling.Apts.IAptRz.html","topicHref":"Hi.Milling.Apts.IAptRz.html","topicUid":"Hi.Milling.Apts.IAptRz","type":"Interface"},{"name":"IGetApt","href":"Hi.Milling.Apts.IGetApt.html","topicHref":"Hi.Milling.Apts.IGetApt.html","topicUid":"Hi.Milling.Apts.IGetApt","type":"Interface"},{"name":"IGetGeneralApt","href":"Hi.Milling.Apts.IGetGeneralApt.html","topicHref":"Hi.Milling.Apts.IGetGeneralApt.html","topicUid":"Hi.Milling.Apts.IGetGeneralApt","type":"Interface"},{"name":"TaperApt","href":"Hi.Milling.Apts.TaperApt.html","topicHref":"Hi.Milling.Apts.TaperApt.html","topicUid":"Hi.Milling.Apts.TaperApt","type":"Class"},{"name":"apt_t","href":"Hi.Milling.Apts.apt_t.html","topicHref":"Hi.Milling.Apts.apt_t.html","topicUid":"Hi.Milling.Apts.apt_t","type":"Struct"}]},{"name":"Hi.Milling.Cutters","href":"Hi.Milling.Cutters.html","topicHref":"Hi.Milling.Cutters.html","topicUid":"Hi.Milling.Cutters","type":"Namespace","items":[{"name":"AptProfile","href":"Hi.Milling.Cutters.AptProfile.html","topicHref":"Hi.Milling.Cutters.AptProfile.html","topicUid":"Hi.Milling.Cutters.AptProfile","type":"Class"},{"name":"ConstRatioProfile","href":"Hi.Milling.Cutters.ConstRatioProfile.html","topicHref":"Hi.Milling.Cutters.ConstRatioProfile.html","topicUid":"Hi.Milling.Cutters.ConstRatioProfile","type":"Class"},{"name":"CustomSpinningProfile","href":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicHref":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicUid":"Hi.Milling.Cutters.CustomSpinningProfile","type":"Class"},{"name":"CutterUtil","href":"Hi.Milling.Cutters.CutterUtil.html","topicHref":"Hi.Milling.Cutters.CutterUtil.html","topicUid":"Hi.Milling.Cutters.CutterUtil","type":"Class"},{"name":"FluteContourDisplayee","href":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicHref":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicUid":"Hi.Milling.Cutters.FluteContourDisplayee","type":"Class"},{"name":"FluteDependentRatioProfile","href":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicHref":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicUid":"Hi.Milling.Cutters.FluteDependentRatioProfile","type":"Class"},{"name":"IShaperProfile","href":"Hi.Milling.Cutters.IShaperProfile.html","topicHref":"Hi.Milling.Cutters.IShaperProfile.html","topicUid":"Hi.Milling.Cutters.IShaperProfile","type":"Interface"},{"name":"MillingCutter","href":"Hi.Milling.Cutters.MillingCutter.html","topicHref":"Hi.Milling.Cutters.MillingCutter.html","topicUid":"Hi.Milling.Cutters.MillingCutter","type":"Class"},{"name":"MillingCutter.IntegralModeEnum","href":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum","type":"Enum"},{"name":"MillingCutter.MassAssignmentMode","href":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicHref":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicUid":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode","type":"Enum"},{"name":"MillingCutterEditorDisplayee","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee","type":"Class"},{"name":"MillingCutterEditorDisplayee.ShapeModeEnum","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum","type":"Enum"}]},{"name":"Hi.Milling.Engagements","href":"Hi.Milling.Engagements.html","topicHref":"Hi.Milling.Engagements.html","topicUid":"Hi.Milling.Engagements","type":"Namespace","items":[{"name":"BitwiseMillingEngagement","href":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicHref":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicUid":"Hi.Milling.Engagements.BitwiseMillingEngagement","type":"Class"},{"name":"EngagementLayer","href":"Hi.Milling.Engagements.EngagementLayer.html","topicHref":"Hi.Milling.Engagements.EngagementLayer.html","topicUid":"Hi.Milling.Engagements.EngagementLayer","type":"Class"},{"name":"EngagementSlice","href":"Hi.Milling.Engagements.EngagementSlice.html","topicHref":"Hi.Milling.Engagements.EngagementSlice.html","topicUid":"Hi.Milling.Engagements.EngagementSlice","type":"Class"},{"name":"IBitwiseMillingEngagementSupport","href":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicHref":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicUid":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport","type":"Interface"},{"name":"IGetLayerMillingEngagement","href":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.IGetLayerMillingEngagement","type":"Interface"},{"name":"LayerMillingEngagement","href":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.LayerMillingEngagement","type":"Class"},{"name":"MillingEngagementUtil","href":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicHref":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicUid":"Hi.Milling.Engagements.MillingEngagementUtil","type":"Class"}]},{"name":"Hi.Milling.FluteContours","href":"Hi.Milling.FluteContours.html","topicHref":"Hi.Milling.FluteContours.html","topicUid":"Hi.Milling.FluteContours","type":"Namespace","items":[{"name":"ConstHelixSideContour","href":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicHref":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicUid":"Hi.Milling.FluteContours.ConstHelixSideContour","type":"Class"},{"name":"FluteContour","href":"Hi.Milling.FluteContours.FluteContour.html","topicHref":"Hi.Milling.FluteContours.FluteContour.html","topicUid":"Hi.Milling.FluteContours.FluteContour","type":"Class"},{"name":"FluteContourUtil","href":"Hi.Milling.FluteContours.FluteContourUtil.html","topicHref":"Hi.Milling.FluteContours.FluteContourUtil.html","topicUid":"Hi.Milling.FluteContours.FluteContourUtil","type":"Class"},{"name":"FreeContourTray","href":"Hi.Milling.FluteContours.FreeContourTray.html","topicHref":"Hi.Milling.FluteContours.FreeContourTray.html","topicUid":"Hi.Milling.FluteContours.FreeContourTray","type":"Class"},{"name":"FreeformSideContour","href":"Hi.Milling.FluteContours.FreeformSideContour.html","topicHref":"Hi.Milling.FluteContours.FreeformSideContour.html","topicUid":"Hi.Milling.FluteContours.FreeformSideContour","type":"Class"},{"name":"IBottomContour","href":"Hi.Milling.FluteContours.IBottomContour.html","topicHref":"Hi.Milling.FluteContours.IBottomContour.html","topicUid":"Hi.Milling.FluteContours.IBottomContour","type":"Interface"},{"name":"IContourTray","href":"Hi.Milling.FluteContours.IContourTray.html","topicHref":"Hi.Milling.FluteContours.IContourTray.html","topicUid":"Hi.Milling.FluteContours.IContourTray","type":"Interface"},{"name":"IFluteNumSourceProperty","href":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicHref":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicUid":"Hi.Milling.FluteContours.IFluteNumSourceProperty","type":"Interface"},{"name":"IGetFluteNum","href":"Hi.Milling.FluteContours.IGetFluteNum.html","topicHref":"Hi.Milling.FluteContours.IGetFluteNum.html","topicUid":"Hi.Milling.FluteContours.IGetFluteNum","type":"Interface"},{"name":"ISideContour","href":"Hi.Milling.FluteContours.ISideContour.html","topicHref":"Hi.Milling.FluteContours.ISideContour.html","topicUid":"Hi.Milling.FluteContours.ISideContour","type":"Interface"},{"name":"IWorkingContour","href":"Hi.Milling.FluteContours.IWorkingContour.html","topicHref":"Hi.Milling.FluteContours.IWorkingContour.html","topicUid":"Hi.Milling.FluteContours.IWorkingContour","type":"Interface"},{"name":"ShiftedWorkingContour","href":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicHref":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicUid":"Hi.Milling.FluteContours.ShiftedWorkingContour","type":"Class"},{"name":"SideContourDisplayee","href":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicHref":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicUid":"Hi.Milling.FluteContours.SideContourDisplayee","type":"Class"},{"name":"SlideBottomContour","href":"Hi.Milling.FluteContours.SlideBottomContour.html","topicHref":"Hi.Milling.FluteContours.SlideBottomContour.html","topicUid":"Hi.Milling.FluteContours.SlideBottomContour","type":"Class"},{"name":"SpanContourPos4d","href":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicHref":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicUid":"Hi.Milling.FluteContours.SpanContourPos4d","type":"Class"},{"name":"UniformContourTray","href":"Hi.Milling.FluteContours.UniformContourTray.html","topicHref":"Hi.Milling.FluteContours.UniformContourTray.html","topicUid":"Hi.Milling.FluteContours.UniformContourTray","type":"Class"}]},{"name":"Hi.Milling.MillingTools","href":"Hi.Milling.MillingTools.html","topicHref":"Hi.Milling.MillingTools.html","topicUid":"Hi.Milling.MillingTools","type":"Namespace","items":[{"name":"MillingTool","href":"Hi.Milling.MillingTools.MillingTool.html","topicHref":"Hi.Milling.MillingTools.MillingTool.html","topicUid":"Hi.Milling.MillingTools.MillingTool","type":"Class"},{"name":"MillingToolAnchorReference","href":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicHref":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicUid":"Hi.Milling.MillingTools.MillingToolAnchorReference","type":"Enum"},{"name":"MillingToolEditorDisplayee","href":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicHref":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicUid":"Hi.Milling.MillingTools.MillingToolEditorDisplayee","type":"Class"},{"name":"MillingToolUtil","href":"Hi.Milling.MillingTools.MillingToolUtil.html","topicHref":"Hi.Milling.MillingTools.MillingToolUtil.html","topicUid":"Hi.Milling.MillingTools.MillingToolUtil","type":"Class"}]},{"name":"Hi.MillingForces","href":"Hi.MillingForces.html","topicHref":"Hi.MillingForces.html","topicUid":"Hi.MillingForces","type":"Namespace","items":[{"name":"FluteZData","href":"Hi.MillingForces.FluteZData.html","topicHref":"Hi.MillingForces.FluteZData.html","topicUid":"Hi.MillingForces.FluteZData","type":"Class"},{"name":"IGetMillingForce","href":"Hi.MillingForces.IGetMillingForce.html","topicHref":"Hi.MillingForces.IGetMillingForce.html","topicUid":"Hi.MillingForces.IGetMillingForce","type":"Interface"},{"name":"IMillingForceAccessor","href":"Hi.MillingForces.IMillingForceAccessor.html","topicHref":"Hi.MillingForces.IMillingForceAccessor.html","topicUid":"Hi.MillingForces.IMillingForceAccessor","type":"Interface"},{"name":"MillingForce","href":"Hi.MillingForces.MillingForce.html","topicHref":"Hi.MillingForces.MillingForce.html","topicUid":"Hi.MillingForces.MillingForce","type":"Class"},{"name":"MillingForceLicense","href":"Hi.MillingForces.MillingForceLicense.html","topicHref":"Hi.MillingForces.MillingForceLicense.html","topicUid":"Hi.MillingForces.MillingForceLicense","type":"Class"},{"name":"MillingForceLuggage","href":"Hi.MillingForces.MillingForceLuggage.html","topicHref":"Hi.MillingForces.MillingForceLuggage.html","topicUid":"Hi.MillingForces.MillingForceLuggage","type":"Class"},{"name":"MillingForceUtil","href":"Hi.MillingForces.MillingForceUtil.html","topicHref":"Hi.MillingForces.MillingForceUtil.html","topicUid":"Hi.MillingForces.MillingForceUtil","type":"Class"},{"name":"MillingForceUtil.AnglePack","href":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicHref":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicUid":"Hi.MillingForces.MillingForceUtil.AnglePack","type":"Class"},{"name":"MillingPhysicsBrief","href":"Hi.MillingForces.MillingPhysicsBrief.html","topicHref":"Hi.MillingForces.MillingPhysicsBrief.html","topicUid":"Hi.MillingForces.MillingPhysicsBrief","type":"Class"},{"name":"PhysicsUtil","href":"Hi.MillingForces.PhysicsUtil.html","topicHref":"Hi.MillingForces.PhysicsUtil.html","topicUid":"Hi.MillingForces.PhysicsUtil","type":"Class"},{"name":"ToolObservationReference","href":"Hi.MillingForces.ToolObservationReference.html","topicHref":"Hi.MillingForces.ToolObservationReference.html","topicUid":"Hi.MillingForces.ToolObservationReference","type":"Enum"}]},{"name":"Hi.MillingForces.Fittings","href":"Hi.MillingForces.Fittings.html","topicHref":"Hi.MillingForces.Fittings.html","topicUid":"Hi.MillingForces.Fittings","type":"Namespace","items":[{"name":"CuttingParaUtil","href":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicHref":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicUid":"Hi.MillingForces.Fittings.CuttingParaUtil","type":"Class"},{"name":"ICuttingPara","href":"Hi.MillingForces.Fittings.ICuttingPara.html","topicHref":"Hi.MillingForces.Fittings.ICuttingPara.html","topicUid":"Hi.MillingForces.Fittings.ICuttingPara","type":"Interface"},{"name":"IGetCuttingPara","href":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicHref":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicUid":"Hi.MillingForces.Fittings.IGetCuttingPara","type":"Interface"},{"name":"SampleCategory","href":"Hi.MillingForces.Fittings.SampleCategory.html","topicHref":"Hi.MillingForces.Fittings.SampleCategory.html","topicUid":"Hi.MillingForces.Fittings.SampleCategory","type":"Class"},{"name":"SampleFlag","href":"Hi.MillingForces.Fittings.SampleFlag.html","topicHref":"Hi.MillingForces.Fittings.SampleFlag.html","topicUid":"Hi.MillingForces.Fittings.SampleFlag","type":"Enum"},{"name":"SampleFlagUtil","href":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicHref":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicUid":"Hi.MillingForces.Fittings.SampleFlagUtil","type":"Class"},{"name":"SampleInstance","href":"Hi.MillingForces.Fittings.SampleInstance.html","topicHref":"Hi.MillingForces.Fittings.SampleInstance.html","topicUid":"Hi.MillingForces.Fittings.SampleInstance","type":"Class"},{"name":"TimeForce","href":"Hi.MillingForces.Fittings.TimeForce.html","topicHref":"Hi.MillingForces.Fittings.TimeForce.html","topicUid":"Hi.MillingForces.Fittings.TimeForce","type":"Class"},{"name":"TimeForceFrequencyDomain","href":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicHref":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicUid":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain","type":"Class"},{"name":"TimeForceSeries","href":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeForceSeries","type":"Class"},{"name":"TimeForceUtil","href":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicHref":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicUid":"Hi.MillingForces.Fittings.TimeForceUtil","type":"Class"},{"name":"TimeVsForceSeries","href":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsForceSeries","type":"Class"},{"name":"TimeVsTorqueSeries","href":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsTorqueSeries","type":"Class"},{"name":"TrainingSample","href":"Hi.MillingForces.Fittings.TrainingSample.html","topicHref":"Hi.MillingForces.Fittings.TrainingSample.html","topicUid":"Hi.MillingForces.Fittings.TrainingSample","type":"Class"}]},{"name":"Hi.MillingForces.ProfileMillingParas","href":"Hi.MillingForces.ProfileMillingParas.html","topicHref":"Hi.MillingForces.ProfileMillingParas.html","topicUid":"Hi.MillingForces.ProfileMillingParas","type":"Namespace","items":[{"name":"IGetLocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara","type":"Interface"},{"name":"LocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara","type":"Class"},{"name":"ProfileMillingParaMap","href":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicHref":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicUid":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap","type":"Class"},{"name":"RtaMillingParaKey","href":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicHref":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicUid":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey","type":"Enum"}]},{"name":"Hi.MillingForces.RakeFaceCuttingParas","href":"Hi.MillingForces.RakeFaceCuttingParas.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas","type":"Namespace","items":[{"name":"IRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara","type":"Interface"},{"name":"MillingPhysicsUtil","href":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil","type":"Class"},{"name":"MultiFormRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara","type":"Class"},{"name":"RakeFaceCuttingPara2d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d","type":"Class"},{"name":"RakeFaceCuttingPara3d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d","type":"Class"},{"name":"RakeFaceCuttingParaMap","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap","type":"Class"}]},{"name":"Hi.MillingForces.Training","href":"Hi.MillingForces.Training.html","topicHref":"Hi.MillingForces.Training.html","topicUid":"Hi.MillingForces.Training","type":"Namespace","items":[{"name":"MillingTraining","href":"Hi.MillingForces.Training.MillingTraining.html","topicHref":"Hi.MillingForces.Training.MillingTraining.html","topicUid":"Hi.MillingForces.Training.MillingTraining","type":"Class"}]},{"name":"Hi.MillingProcs","href":"Hi.MillingProcs.html","topicHref":"Hi.MillingProcs.html","topicUid":"Hi.MillingProcs","type":"Namespace","items":[{"name":"MillingGuide","href":"Hi.MillingProcs.MillingGuide.html","topicHref":"Hi.MillingProcs.MillingGuide.html","topicUid":"Hi.MillingProcs.MillingGuide","type":"Class"}]},{"name":"Hi.MillingStepUtils","href":"Hi.MillingStepUtils.html","topicHref":"Hi.MillingStepUtils.html","topicUid":"Hi.MillingStepUtils","type":"Namespace","items":[{"name":"ClStripChartConfig","href":"Hi.MillingStepUtils.ClStripChartConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartConfig","type":"Class"},{"name":"ClStripChartItemConfig","href":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartItemConfig","type":"Class"},{"name":"ForceCycleFlag","href":"Hi.MillingStepUtils.ForceCycleFlag.html","topicHref":"Hi.MillingStepUtils.ForceCycleFlag.html","topicUid":"Hi.MillingStepUtils.ForceCycleFlag","type":"Enum"},{"name":"ForceCycleLineDivConfig","href":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.ForceCycleLineDivConfig","type":"Class"},{"name":"LineChartVRangeMode","href":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicHref":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicUid":"Hi.MillingStepUtils.LineChartVRangeMode","type":"Enum"},{"name":"SpindleMomentCycleLineDivConfig","href":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig","type":"Class"},{"name":"TimeChartYConfig","href":"Hi.MillingStepUtils.TimeChartYConfig.html","topicHref":"Hi.MillingStepUtils.TimeChartYConfig.html","topicUid":"Hi.MillingStepUtils.TimeChartYConfig","type":"Class"}]},{"name":"Hi.MillingSteps","href":"Hi.MillingSteps.html","topicHref":"Hi.MillingSteps.html","topicUid":"Hi.MillingSteps","type":"Namespace","items":[{"name":"MillingInstance","href":"Hi.MillingSteps.MillingInstance.html","topicHref":"Hi.MillingSteps.MillingInstance.html","topicUid":"Hi.MillingSteps.MillingInstance","type":"Class"},{"name":"MillingStepLuggage","href":"Hi.MillingSteps.MillingStepLuggage.html","topicHref":"Hi.MillingSteps.MillingStepLuggage.html","topicUid":"Hi.MillingSteps.MillingStepLuggage","type":"Class"}]},{"name":"Hi.Motion","href":"Hi.Motion.html","topicHref":"Hi.Motion.html","topicUid":"Hi.Motion","type":"Namespace","items":[{"name":"MotionUtil","href":"Hi.Motion.MotionUtil.html","topicHref":"Hi.Motion.MotionUtil.html","topicUid":"Hi.Motion.MotionUtil","type":"Class"}]},{"name":"Hi.Motion.MatValves","href":"Hi.Motion.MatValves.html","topicHref":"Hi.Motion.MatValves.html","topicUid":"Hi.Motion.MatValves","type":"Namespace","items":[{"name":"ClMachiningValve","href":"Hi.Motion.MatValves.ClMachiningValve.html","topicHref":"Hi.Motion.MatValves.ClMachiningValve.html","topicUid":"Hi.Motion.MatValves.ClMachiningValve","type":"Class"},{"name":"IMotionValve","href":"Hi.Motion.MatValves.IMotionValve.html","topicHref":"Hi.Motion.MatValves.IMotionValve.html","topicUid":"Hi.Motion.MatValves.IMotionValve","type":"Interface"},{"name":"MacroMotionValve","href":"Hi.Motion.MatValves.MacroMotionValve.html","topicHref":"Hi.Motion.MatValves.MacroMotionValve.html","topicUid":"Hi.Motion.MatValves.MacroMotionValve","type":"Class"},{"name":"StepMotionValve","href":"Hi.Motion.MatValves.StepMotionValve.html","topicHref":"Hi.Motion.MatValves.StepMotionValve.html","topicUid":"Hi.Motion.MatValves.StepMotionValve","type":"Class"}]},{"name":"Hi.Native","href":"Hi.Native.html","topicHref":"Hi.Native.html","topicUid":"Hi.Native","type":"Namespace","items":[{"name":"StopSource","href":"Hi.Native.StopSource.html","topicHref":"Hi.Native.StopSource.html","topicUid":"Hi.Native.StopSource","type":"Class"},{"name":"StopToken","href":"Hi.Native.StopToken.html","topicHref":"Hi.Native.StopToken.html","topicUid":"Hi.Native.StopToken","type":"Class"},{"name":"StopTokenKit","href":"Hi.Native.StopTokenKit.html","topicHref":"Hi.Native.StopTokenKit.html","topicUid":"Hi.Native.StopTokenKit","type":"Class"},{"name":"StopTokenUtil","href":"Hi.Native.StopTokenUtil.html","topicHref":"Hi.Native.StopTokenUtil.html","topicUid":"Hi.Native.StopTokenUtil","type":"Class"},{"name":"bind_t","href":"Hi.Native.bind_t.html","topicHref":"Hi.Native.bind_t.html","topicUid":"Hi.Native.bind_t","type":"Struct"},{"name":"box2d","href":"Hi.Native.box2d.html","topicHref":"Hi.Native.box2d.html","topicUid":"Hi.Native.box2d","type":"Struct"},{"name":"box3d","href":"Hi.Native.box3d.html","topicHref":"Hi.Native.box3d.html","topicUid":"Hi.Native.box3d","type":"Struct"},{"name":"expand_to_box3d_func_t","href":"Hi.Native.expand_to_box3d_func_t.html","topicHref":"Hi.Native.expand_to_box3d_func_t.html","topicUid":"Hi.Native.expand_to_box3d_func_t","type":"Delegate"},{"name":"key_event_t","href":"Hi.Native.key_event_t.html","topicHref":"Hi.Native.key_event_t.html","topicUid":"Hi.Native.key_event_t","type":"Struct"},{"name":"key_table__transform_view_by_key_pressing_t","href":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicHref":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicUid":"Hi.Native.key_table__transform_view_by_key_pressing_t","type":"Struct"},{"name":"mat4d","href":"Hi.Native.mat4d.html","topicHref":"Hi.Native.mat4d.html","topicUid":"Hi.Native.mat4d","type":"Struct"},{"name":"mat_stack_t","href":"Hi.Native.mat_stack_t.html","topicHref":"Hi.Native.mat_stack_t.html","topicUid":"Hi.Native.mat_stack_t","type":"Struct"},{"name":"mouse_button_event_t","href":"Hi.Native.mouse_button_event_t.html","topicHref":"Hi.Native.mouse_button_event_t.html","topicUid":"Hi.Native.mouse_button_event_t","type":"Struct"},{"name":"mouse_button_table__transform_view_by_mouse_drag_t","href":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicHref":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicUid":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t","type":"Struct"},{"name":"mouse_move_event_t","href":"Hi.Native.mouse_move_event_t.html","topicHref":"Hi.Native.mouse_move_event_t.html","topicUid":"Hi.Native.mouse_move_event_t","type":"Struct"},{"name":"mouse_wheel_event_t","href":"Hi.Native.mouse_wheel_event_t.html","topicHref":"Hi.Native.mouse_wheel_event_t.html","topicUid":"Hi.Native.mouse_wheel_event_t","type":"Struct"},{"name":"panel_state_t","href":"Hi.Native.panel_state_t.html","topicHref":"Hi.Native.panel_state_t.html","topicUid":"Hi.Native.panel_state_t","type":"Struct"},{"name":"picking_event_t","href":"Hi.Native.picking_event_t.html","topicHref":"Hi.Native.picking_event_t.html","topicUid":"Hi.Native.picking_event_t","type":"Struct"},{"name":"picking_mark_t","href":"Hi.Native.picking_mark_t.html","topicHref":"Hi.Native.picking_mark_t.html","topicUid":"Hi.Native.picking_mark_t","type":"Struct"},{"name":"tri3d","href":"Hi.Native.tri3d.html","topicHref":"Hi.Native.tri3d.html","topicUid":"Hi.Native.tri3d","type":"Struct"},{"name":"ui_event_type","href":"Hi.Native.ui_event_type.html","topicHref":"Hi.Native.ui_event_type.html","topicUid":"Hi.Native.ui_event_type","type":"Enum"},{"name":"vec2d","href":"Hi.Native.vec2d.html","topicHref":"Hi.Native.vec2d.html","topicUid":"Hi.Native.vec2d","type":"Struct"},{"name":"vec3d","href":"Hi.Native.vec3d.html","topicHref":"Hi.Native.vec3d.html","topicUid":"Hi.Native.vec3d","type":"Struct"},{"name":"vec3f","href":"Hi.Native.vec3f.html","topicHref":"Hi.Native.vec3f.html","topicUid":"Hi.Native.vec3f","type":"Struct"}]},{"name":"Hi.NcMech","href":"Hi.NcMech.html","topicHref":"Hi.NcMech.html","topicUid":"Hi.NcMech","type":"Namespace","items":[{"name":"ICollisionIndexPairsSource","href":"Hi.NcMech.ICollisionIndexPairsSource.html","topicHref":"Hi.NcMech.ICollisionIndexPairsSource.html","topicUid":"Hi.NcMech.ICollisionIndexPairsSource","type":"Interface"}]},{"name":"Hi.NcMech.Fixtures","href":"Hi.NcMech.Fixtures.html","topicHref":"Hi.NcMech.Fixtures.html","topicUid":"Hi.NcMech.Fixtures","type":"Namespace","items":[{"name":"Fixture","href":"Hi.NcMech.Fixtures.Fixture.html","topicHref":"Hi.NcMech.Fixtures.Fixture.html","topicUid":"Hi.NcMech.Fixtures.Fixture","type":"Class"},{"name":"FixtureEditorDisplayee","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayee","type":"Class"},{"name":"FixtureEditorDisplayeeConfig","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Holders","href":"Hi.NcMech.Holders.html","topicHref":"Hi.NcMech.Holders.html","topicUid":"Hi.NcMech.Holders","type":"Namespace","items":[{"name":"CylindroidHolder","href":"Hi.NcMech.Holders.CylindroidHolder.html","topicHref":"Hi.NcMech.Holders.CylindroidHolder.html","topicUid":"Hi.NcMech.Holders.CylindroidHolder","type":"Class"},{"name":"FreeformHolder","href":"Hi.NcMech.Holders.FreeformHolder.html","topicHref":"Hi.NcMech.Holders.FreeformHolder.html","topicUid":"Hi.NcMech.Holders.FreeformHolder","type":"Class"},{"name":"HolderEditorDisplayee","href":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicHref":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicUid":"Hi.NcMech.Holders.HolderEditorDisplayee","type":"Class"},{"name":"IHolder","href":"Hi.NcMech.Holders.IHolder.html","topicHref":"Hi.NcMech.Holders.IHolder.html","topicUid":"Hi.NcMech.Holders.IHolder","type":"Interface"}]},{"name":"Hi.NcMech.Solids","href":"Hi.NcMech.Solids.html","topicHref":"Hi.NcMech.Solids.html","topicUid":"Hi.NcMech.Solids","type":"Namespace","items":[{"name":"IGetSolid","href":"Hi.NcMech.Solids.IGetSolid.html","topicHref":"Hi.NcMech.Solids.IGetSolid.html","topicUid":"Hi.NcMech.Solids.IGetSolid","type":"Interface"},{"name":"Solid","href":"Hi.NcMech.Solids.Solid.html","topicHref":"Hi.NcMech.Solids.Solid.html","topicUid":"Hi.NcMech.Solids.Solid","type":"Class"},{"name":"Solid.RenderingModeEnum","href":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicHref":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicUid":"Hi.NcMech.Solids.Solid.RenderingModeEnum","type":"Enum"},{"name":"SolidFuncSource","href":"Hi.NcMech.Solids.SolidFuncSource.html","topicHref":"Hi.NcMech.Solids.SolidFuncSource.html","topicUid":"Hi.NcMech.Solids.SolidFuncSource","type":"Class"}]},{"name":"Hi.NcMech.Topo","href":"Hi.NcMech.Topo.html","topicHref":"Hi.NcMech.Topo.html","topicUid":"Hi.NcMech.Topo","type":"Namespace","items":[{"name":"INcStroke","href":"Hi.NcMech.Topo.INcStroke.html","topicHref":"Hi.NcMech.Topo.INcStroke.html","topicUid":"Hi.NcMech.Topo.INcStroke","type":"Interface"},{"name":"INcTransformer","href":"Hi.NcMech.Topo.INcTransformer.html","topicHref":"Hi.NcMech.Topo.INcTransformer.html","topicUid":"Hi.NcMech.Topo.INcTransformer","type":"Interface"},{"name":"ITopoBrick","href":"Hi.NcMech.Topo.ITopoBrick.html","topicHref":"Hi.NcMech.Topo.ITopoBrick.html","topicUid":"Hi.NcMech.Topo.ITopoBrick","type":"Interface"},{"name":"NcRotation","href":"Hi.NcMech.Topo.NcRotation.html","topicHref":"Hi.NcMech.Topo.NcRotation.html","topicUid":"Hi.NcMech.Topo.NcRotation","type":"Class"},{"name":"NcTranslation","href":"Hi.NcMech.Topo.NcTranslation.html","topicHref":"Hi.NcMech.Topo.NcTranslation.html","topicUid":"Hi.NcMech.Topo.NcTranslation","type":"Class"},{"name":"SolidSourceTopoBrick","href":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.SolidSourceTopoBrick","type":"Class"},{"name":"StlSourceTopoBrick","href":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.StlSourceTopoBrick","type":"Class"}]},{"name":"Hi.NcMech.Workpieces","href":"Hi.NcMech.Workpieces.html","topicHref":"Hi.NcMech.Workpieces.html","topicUid":"Hi.NcMech.Workpieces","type":"Namespace","items":[{"name":"Workpiece","href":"Hi.NcMech.Workpieces.Workpiece.html","topicHref":"Hi.NcMech.Workpieces.Workpiece.html","topicUid":"Hi.NcMech.Workpieces.Workpiece","type":"Class"},{"name":"WorkpieceEditorDisplayee","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee","type":"Class"},{"name":"WorkpieceEditorDisplayeeConfig","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig","type":"Class"},{"name":"WorkpieceService","href":"Hi.NcMech.Workpieces.WorkpieceService.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceService.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceService","type":"Class"}]},{"name":"Hi.NcMech.Xyzabc","href":"Hi.NcMech.Xyzabc.html","topicHref":"Hi.NcMech.Xyzabc.html","topicUid":"Hi.NcMech.Xyzabc","type":"Namespace","items":[{"name":"CodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool","type":"Class"},{"name":"CodeXyzabcMachineToolUri","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri","type":"Class"},{"name":"GeneralXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool","type":"Class"},{"name":"IGetCodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool","type":"Interface"},{"name":"IXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IXyzabcMachineTool","type":"Interface"}]},{"name":"Hi.NcOpt","href":"Hi.NcOpt.html","topicHref":"Hi.NcOpt.html","topicUid":"Hi.NcOpt","type":"Namespace","items":[{"name":"CuttingVelocityOptLimit","href":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.CuttingVelocityOptLimit","type":"Class"},{"name":"FixedFeedPerCycleOptLimit","href":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerCycleOptLimit","type":"Class"},{"name":"FixedFeedPerToothOptLimit","href":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerToothOptLimit","type":"Class"},{"name":"ICutterOptLimitHost","href":"Hi.NcOpt.ICutterOptLimitHost.html","topicHref":"Hi.NcOpt.ICutterOptLimitHost.html","topicUid":"Hi.NcOpt.ICutterOptLimitHost","type":"Interface"},{"name":"ICutterOptOption","href":"Hi.NcOpt.ICutterOptOption.html","topicHref":"Hi.NcOpt.ICutterOptOption.html","topicUid":"Hi.NcOpt.ICutterOptOption","type":"Interface"},{"name":"ICuttingVelocityOptLimit","href":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.ICuttingVelocityOptLimit","type":"Interface"},{"name":"IFeedPerToothOptLimit","href":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.IFeedPerToothOptLimit","type":"Interface"},{"name":"MillingCutterOptOption","href":"Hi.NcOpt.MillingCutterOptOption.html","topicHref":"Hi.NcOpt.MillingCutterOptOption.html","topicUid":"Hi.NcOpt.MillingCutterOptOption","type":"Class"},{"name":"NcOptOption","href":"Hi.NcOpt.NcOptOption.html","topicHref":"Hi.NcOpt.NcOptOption.html","topicUid":"Hi.NcOpt.NcOptOption","type":"Class"},{"name":"NcOptProc","href":"Hi.NcOpt.NcOptProc.html","topicHref":"Hi.NcOpt.NcOptProc.html","topicUid":"Hi.NcOpt.NcOptProc","type":"Class"},{"name":"NcOptimizationEmbeddedLogMode","href":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicHref":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicUid":"Hi.NcOpt.NcOptimizationEmbeddedLogMode","type":"Enum"},{"name":"ShapeBasedCutterOptLimit","href":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicHref":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicUid":"Hi.NcOpt.ShapeBasedCutterOptLimit","type":"Class"}]},{"name":"Hi.NcParsers","href":"Hi.NcParsers.html","topicHref":"Hi.NcParsers.html","topicUid":"Hi.NcParsers","type":"Namespace","items":[{"name":"IGetSentence","href":"Hi.NcParsers.IGetSentence.html","topicHref":"Hi.NcParsers.IGetSentence.html","topicUid":"Hi.NcParsers.IGetSentence","type":"Interface"},{"name":"NcDiagnostic","href":"Hi.NcParsers.NcDiagnostic.html","topicHref":"Hi.NcParsers.NcDiagnostic.html","topicUid":"Hi.NcParsers.NcDiagnostic","type":"Class"},{"name":"NcDiagnosticCategory","href":"Hi.NcParsers.NcDiagnosticCategory.html","topicHref":"Hi.NcParsers.NcDiagnosticCategory.html","topicUid":"Hi.NcParsers.NcDiagnosticCategory","type":"Enum"},{"name":"NcDiagnosticProgress","href":"Hi.NcParsers.NcDiagnosticProgress.html","topicHref":"Hi.NcParsers.NcDiagnosticProgress.html","topicUid":"Hi.NcParsers.NcDiagnosticProgress","type":"Class"},{"name":"NcDiagnosticSeverity","href":"Hi.NcParsers.NcDiagnosticSeverity.html","topicHref":"Hi.NcParsers.NcDiagnosticSeverity.html","topicUid":"Hi.NcParsers.NcDiagnosticSeverity","type":"Enum"},{"name":"Sentence","href":"Hi.NcParsers.Sentence.html","topicHref":"Hi.NcParsers.Sentence.html","topicUid":"Hi.NcParsers.Sentence","type":"Class"},{"name":"SoftNcRunner","href":"Hi.NcParsers.SoftNcRunner.html","topicHref":"Hi.NcParsers.SoftNcRunner.html","topicUid":"Hi.NcParsers.SoftNcRunner","type":"Class"},{"name":"SoftNcUtil","href":"Hi.NcParsers.SoftNcUtil.html","topicHref":"Hi.NcParsers.SoftNcUtil.html","topicUid":"Hi.NcParsers.SoftNcUtil","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys","href":"Hi.NcParsers.Dependencys.html","topicHref":"Hi.NcParsers.Dependencys.html","topicUid":"Hi.NcParsers.Dependencys","type":"Namespace","items":[{"name":"AxisType","href":"Hi.NcParsers.Dependencys.AxisType.html","topicHref":"Hi.NcParsers.Dependencys.AxisType.html","topicUid":"Hi.NcParsers.Dependencys.AxisType","type":"Enum"},{"name":"CncBrandDependency","href":"Hi.NcParsers.Dependencys.CncBrandDependency.html","topicHref":"Hi.NcParsers.Dependencys.CncBrandDependency.html","topicUid":"Hi.NcParsers.Dependencys.CncBrandDependency","type":"Class"},{"name":"ControllerParameterTableBase","href":"Hi.NcParsers.Dependencys.ControllerParameterTableBase.html","topicHref":"Hi.NcParsers.Dependencys.ControllerParameterTableBase.html","topicUid":"Hi.NcParsers.Dependencys.ControllerParameterTableBase","type":"Class"},{"name":"HeidenhainDatumTable","href":"Hi.NcParsers.Dependencys.HeidenhainDatumTable.html","topicHref":"Hi.NcParsers.Dependencys.HeidenhainDatumTable.html","topicUid":"Hi.NcParsers.Dependencys.HeidenhainDatumTable","type":"Class"},{"name":"IBlockSkipConfig","href":"Hi.NcParsers.Dependencys.IBlockSkipConfig.html","topicHref":"Hi.NcParsers.Dependencys.IBlockSkipConfig.html","topicUid":"Hi.NcParsers.Dependencys.IBlockSkipConfig","type":"Interface"},{"name":"ICannedCycleConfig","href":"Hi.NcParsers.Dependencys.ICannedCycleConfig.html","topicHref":"Hi.NcParsers.Dependencys.ICannedCycleConfig.html","topicUid":"Hi.NcParsers.Dependencys.ICannedCycleConfig","type":"Interface"},{"name":"IHomeMcConfig","href":"Hi.NcParsers.Dependencys.IHomeMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.IHomeMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.IHomeMcConfig","type":"Interface"},{"name":"IIsoCoordinateConfig","href":"Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html","topicHref":"Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html","topicUid":"Hi.NcParsers.Dependencys.IIsoCoordinateConfig","type":"Interface"},{"name":"IMachineAxisConfig","href":"Hi.NcParsers.Dependencys.IMachineAxisConfig.html","topicHref":"Hi.NcParsers.Dependencys.IMachineAxisConfig.html","topicUid":"Hi.NcParsers.Dependencys.IMachineAxisConfig","type":"Interface"},{"name":"INcDependency","href":"Hi.NcParsers.Dependencys.INcDependency.html","topicHref":"Hi.NcParsers.Dependencys.INcDependency.html","topicUid":"Hi.NcParsers.Dependencys.INcDependency","type":"Interface"},{"name":"IPowerResettable","href":"Hi.NcParsers.Dependencys.IPowerResettable.html","topicHref":"Hi.NcParsers.Dependencys.IPowerResettable.html","topicUid":"Hi.NcParsers.Dependencys.IPowerResettable","type":"Interface"},{"name":"IRapidFeedrateConfig","href":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html","topicHref":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html","topicUid":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig","type":"Interface"},{"name":"IStrokeLimitConfig","href":"Hi.NcParsers.Dependencys.IStrokeLimitConfig.html","topicHref":"Hi.NcParsers.Dependencys.IStrokeLimitConfig.html","topicUid":"Hi.NcParsers.Dependencys.IStrokeLimitConfig","type":"Interface"},{"name":"IToolOffsetConfig","href":"Hi.NcParsers.Dependencys.IToolOffsetConfig.html","topicHref":"Hi.NcParsers.Dependencys.IToolOffsetConfig.html","topicUid":"Hi.NcParsers.Dependencys.IToolOffsetConfig","type":"Interface"},{"name":"IToolingMcConfig","href":"Hi.NcParsers.Dependencys.IToolingMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.IToolingMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.IToolingMcConfig","type":"Interface"},{"name":"IsoCoordinateAddressMap","href":"Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html","topicHref":"Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html","topicUid":"Hi.NcParsers.Dependencys.IsoCoordinateAddressMap","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Fanuc","href":"Hi.NcParsers.Dependencys.Fanuc.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc","type":"Namespace","items":[{"name":"CutterCompensationType","href":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType","type":"Enum"},{"name":"FanucParameterTable","href":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable","type":"Class"},{"name":"FanucPositionVariableLookup","href":"Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup","type":"Class"},{"name":"FanucToolOffsetVariableLookup","href":"Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup","type":"Class"},{"name":"RetainedCommonVariableTable","href":"Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Generic","href":"Hi.NcParsers.Dependencys.Generic.html","topicHref":"Hi.NcParsers.Dependencys.Generic.html","topicUid":"Hi.NcParsers.Dependencys.Generic","type":"Namespace","items":[{"name":"FallbackConfig","href":"Hi.NcParsers.Dependencys.Generic.FallbackConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.FallbackConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.FallbackConfig","type":"Class"},{"name":"GenericBlockSkipConfig","href":"Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig","type":"Class"},{"name":"IsoCoordinateTable","href":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html","topicHref":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html","topicUid":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable","type":"Class"},{"name":"SubProgramFolderConfig","href":"Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig","type":"Class"},{"name":"ToolOffsetRow","href":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow","type":"Class"},{"name":"ToolOffsetTable","href":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable","type":"Class"},{"name":"ToolingMcConfig","href":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Heidenhain","href":"Hi.NcParsers.Dependencys.Heidenhain.html","topicHref":"Hi.NcParsers.Dependencys.Heidenhain.html","topicUid":"Hi.NcParsers.Dependencys.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainParameterTable","href":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Siemens","href":"Hi.NcParsers.Dependencys.Siemens.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.html","topicUid":"Hi.NcParsers.Dependencys.Siemens","type":"Namespace","items":[{"name":"ISiemensToolOffsetConfig","href":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig","type":"Interface"},{"name":"SiemensFrameTable","href":"Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable","type":"Class"},{"name":"SiemensMachineDataTable","href":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Syntec","href":"Hi.NcParsers.Dependencys.Syntec.html","topicHref":"Hi.NcParsers.Dependencys.Syntec.html","topicUid":"Hi.NcParsers.Dependencys.Syntec","type":"Namespace","items":[{"name":"SyntecParameterTable","href":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.SystemWired","href":"Hi.NcParsers.Dependencys.SystemWired.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired","type":"Namespace","items":[{"name":"FileIndexCounterDependency","href":"Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency","type":"Class"},{"name":"NcKinematicsDependency","href":"Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency","type":"Class"},{"name":"ProjectFolderDependency","href":"Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency","type":"Class"},{"name":"SegmenterDependency","href":"Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency","type":"Class"},{"name":"SyntaxPieceLayerDependency","href":"Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency","type":"Class"}]},{"name":"Hi.NcParsers.EvaluationSyntaxs","href":"Hi.NcParsers.EvaluationSyntaxs.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs","type":"Namespace","items":[{"name":"FanucSystemControlVariableSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax","type":"Class"},{"name":"RetainedCommonVariableReadingSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax","type":"Class"},{"name":"SubProgramCallSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax","type":"Class"},{"name":"SubProgramReturnSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax","type":"Class"},{"name":"VariableEvaluatorSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax","type":"Class"},{"name":"VolatileVariableReadingSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax","type":"Class"}]},{"name":"Hi.NcParsers.EvaluationSyntaxs.Evaluation","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation","type":"Namespace","items":[{"name":"EvalResult","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult","type":"Struct"},{"name":"IRuntimeVariableLookup","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup","type":"Interface"},{"name":"IVariableLookup","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup","type":"Interface"},{"name":"LocalVariableLookup","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup","type":"Class"},{"name":"NcBinaryExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr","type":"Class"},{"name":"NcBinaryOp","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp","type":"Enum"},{"name":"NcExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr","type":"Class"},{"name":"NcExpressionEvaluator","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator","type":"Class"},{"name":"NcExpressionParser","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser","type":"Class"},{"name":"NcFunctionExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr","type":"Class"},{"name":"NcIndirectVariableExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr","type":"Class"},{"name":"NcLiteralExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr","type":"Class"},{"name":"NcUnaryExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr","type":"Class"},{"name":"NcUnaryOp","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp","type":"Enum"},{"name":"NcVariableExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr","type":"Class"},{"name":"VolatileVariableLookup","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup","type":"Class"}]},{"name":"Hi.NcParsers.Initializers","href":"Hi.NcParsers.Initializers.html","topicHref":"Hi.NcParsers.Initializers.html","topicUid":"Hi.NcParsers.Initializers","type":"Namespace","items":[{"name":"HomeMcInitializer","href":"Hi.NcParsers.Initializers.HomeMcInitializer.html","topicHref":"Hi.NcParsers.Initializers.HomeMcInitializer.html","topicUid":"Hi.NcParsers.Initializers.HomeMcInitializer","type":"Class"},{"name":"INcInitializer","href":"Hi.NcParsers.Initializers.INcInitializer.html","topicHref":"Hi.NcParsers.Initializers.INcInitializer.html","topicUid":"Hi.NcParsers.Initializers.INcInitializer","type":"Interface"},{"name":"StaticInitializer","href":"Hi.NcParsers.Initializers.StaticInitializer.html","topicHref":"Hi.NcParsers.Initializers.StaticInitializer.html","topicUid":"Hi.NcParsers.Initializers.StaticInitializer","type":"Class"}]},{"name":"Hi.NcParsers.InspectionSyntaxs","href":"Hi.NcParsers.InspectionSyntaxs.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.html","topicUid":"Hi.NcParsers.InspectionSyntaxs","type":"Namespace","items":[{"name":"CleanupSyntax","href":"Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html","topicUid":"Hi.NcParsers.InspectionSyntaxs.CleanupSyntax","type":"Class"},{"name":"ProgramXyzBackfillSyntax","href":"Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html","topicUid":"Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax","type":"Class"},{"name":"SnapshotSyntax","href":"Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html","topicUid":"Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax","type":"Class"},{"name":"UnconsumedCheckSyntax","href":"Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html","topicUid":"Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax","type":"Class"}]},{"name":"Hi.NcParsers.Keywords","href":"Hi.NcParsers.Keywords.html","topicHref":"Hi.NcParsers.Keywords.html","topicUid":"Hi.NcParsers.Keywords","type":"Namespace","items":[{"name":"BlockSkip","href":"Hi.NcParsers.Keywords.BlockSkip.html","topicHref":"Hi.NcParsers.Keywords.BlockSkip.html","topicUid":"Hi.NcParsers.Keywords.BlockSkip","type":"Class"},{"name":"CannedCycle","href":"Hi.NcParsers.Keywords.CannedCycle.html","topicHref":"Hi.NcParsers.Keywords.CannedCycle.html","topicUid":"Hi.NcParsers.Keywords.CannedCycle","type":"Class"},{"name":"Comment","href":"Hi.NcParsers.Keywords.Comment.html","topicHref":"Hi.NcParsers.Keywords.Comment.html","topicUid":"Hi.NcParsers.Keywords.Comment","type":"Class"},{"name":"CompoundMotion","href":"Hi.NcParsers.Keywords.CompoundMotion.html","topicHref":"Hi.NcParsers.Keywords.CompoundMotion.html","topicUid":"Hi.NcParsers.Keywords.CompoundMotion","type":"Class"},{"name":"Coolant","href":"Hi.NcParsers.Keywords.Coolant.html","topicHref":"Hi.NcParsers.Keywords.Coolant.html","topicUid":"Hi.NcParsers.Keywords.Coolant","type":"Class"},{"name":"CoordinateOffset","href":"Hi.NcParsers.Keywords.CoordinateOffset.html","topicHref":"Hi.NcParsers.Keywords.CoordinateOffset.html","topicUid":"Hi.NcParsers.Keywords.CoordinateOffset","type":"Class"},{"name":"CsScript","href":"Hi.NcParsers.Keywords.CsScript.html","topicHref":"Hi.NcParsers.Keywords.CsScript.html","topicUid":"Hi.NcParsers.Keywords.CsScript","type":"Class"},{"name":"Dwell","href":"Hi.NcParsers.Keywords.Dwell.html","topicHref":"Hi.NcParsers.Keywords.Dwell.html","topicUid":"Hi.NcParsers.Keywords.Dwell","type":"Class"},{"name":"FanucPathSmoothing","href":"Hi.NcParsers.Keywords.FanucPathSmoothing.html","topicHref":"Hi.NcParsers.Keywords.FanucPathSmoothing.html","topicUid":"Hi.NcParsers.Keywords.FanucPathSmoothing","type":"Class"},{"name":"FanucProgramNumber","href":"Hi.NcParsers.Keywords.FanucProgramNumber.html","topicHref":"Hi.NcParsers.Keywords.FanucProgramNumber.html","topicUid":"Hi.NcParsers.Keywords.FanucProgramNumber","type":"Class"},{"name":"Feedrate","href":"Hi.NcParsers.Keywords.Feedrate.html","topicHref":"Hi.NcParsers.Keywords.Feedrate.html","topicUid":"Hi.NcParsers.Keywords.Feedrate","type":"Class"},{"name":"IArcMotionDef","href":"Hi.NcParsers.Keywords.IArcMotionDef.html","topicHref":"Hi.NcParsers.Keywords.IArcMotionDef.html","topicUid":"Hi.NcParsers.Keywords.IArcMotionDef","type":"Interface"},{"name":"ICannedCycleDef","href":"Hi.NcParsers.Keywords.ICannedCycleDef.html","topicHref":"Hi.NcParsers.Keywords.ICannedCycleDef.html","topicUid":"Hi.NcParsers.Keywords.ICannedCycleDef","type":"Interface"},{"name":"ICompoundMotionDef","href":"Hi.NcParsers.Keywords.ICompoundMotionDef.html","topicHref":"Hi.NcParsers.Keywords.ICompoundMotionDef.html","topicUid":"Hi.NcParsers.Keywords.ICompoundMotionDef","type":"Interface"},{"name":"ICoolantDef","href":"Hi.NcParsers.Keywords.ICoolantDef.html","topicHref":"Hi.NcParsers.Keywords.ICoolantDef.html","topicUid":"Hi.NcParsers.Keywords.ICoolantDef","type":"Interface"},{"name":"IDwellDef","href":"Hi.NcParsers.Keywords.IDwellDef.html","topicHref":"Hi.NcParsers.Keywords.IDwellDef.html","topicUid":"Hi.NcParsers.Keywords.IDwellDef","type":"Interface"},{"name":"IFanucPathSmoothingDef","href":"Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html","topicHref":"Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html","topicUid":"Hi.NcParsers.Keywords.IFanucPathSmoothingDef","type":"Interface"},{"name":"IFeedrateDef","href":"Hi.NcParsers.Keywords.IFeedrateDef.html","topicHref":"Hi.NcParsers.Keywords.IFeedrateDef.html","topicUid":"Hi.NcParsers.Keywords.IFeedrateDef","type":"Interface"},{"name":"IFlagsDef","href":"Hi.NcParsers.Keywords.IFlagsDef.html","topicHref":"Hi.NcParsers.Keywords.IFlagsDef.html","topicUid":"Hi.NcParsers.Keywords.IFlagsDef","type":"Interface"},{"name":"IMachineCoordinateStateDef","href":"Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html","topicHref":"Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html","topicUid":"Hi.NcParsers.Keywords.IMachineCoordinateStateDef","type":"Interface"},{"name":"IMotionEventDef","href":"Hi.NcParsers.Keywords.IMotionEventDef.html","topicHref":"Hi.NcParsers.Keywords.IMotionEventDef.html","topicUid":"Hi.NcParsers.Keywords.IMotionEventDef","type":"Interface"},{"name":"IMotionStateDef","href":"Hi.NcParsers.Keywords.IMotionStateDef.html","topicHref":"Hi.NcParsers.Keywords.IMotionStateDef.html","topicUid":"Hi.NcParsers.Keywords.IMotionStateDef","type":"Interface"},{"name":"IParsingDef","href":"Hi.NcParsers.Keywords.IParsingDef.html","topicHref":"Hi.NcParsers.Keywords.IParsingDef.html","topicUid":"Hi.NcParsers.Keywords.IParsingDef","type":"Interface"},{"name":"IPathSmoothingDef","href":"Hi.NcParsers.Keywords.IPathSmoothingDef.html","topicHref":"Hi.NcParsers.Keywords.IPathSmoothingDef.html","topicUid":"Hi.NcParsers.Keywords.IPathSmoothingDef","type":"Interface"},{"name":"IPlaneSelectDef","href":"Hi.NcParsers.Keywords.IPlaneSelectDef.html","topicHref":"Hi.NcParsers.Keywords.IPlaneSelectDef.html","topicUid":"Hi.NcParsers.Keywords.IPlaneSelectDef","type":"Interface"},{"name":"IPositioningDef","href":"Hi.NcParsers.Keywords.IPositioningDef.html","topicHref":"Hi.NcParsers.Keywords.IPositioningDef.html","topicUid":"Hi.NcParsers.Keywords.IPositioningDef","type":"Interface"},{"name":"IProgramEndDef","href":"Hi.NcParsers.Keywords.IProgramEndDef.html","topicHref":"Hi.NcParsers.Keywords.IProgramEndDef.html","topicUid":"Hi.NcParsers.Keywords.IProgramEndDef","type":"Interface"},{"name":"IProgramStopDef","href":"Hi.NcParsers.Keywords.IProgramStopDef.html","topicHref":"Hi.NcParsers.Keywords.IProgramStopDef.html","topicUid":"Hi.NcParsers.Keywords.IProgramStopDef","type":"Interface"},{"name":"IProgramXyzDef","href":"Hi.NcParsers.Keywords.IProgramXyzDef.html","topicHref":"Hi.NcParsers.Keywords.IProgramXyzDef.html","topicUid":"Hi.NcParsers.Keywords.IProgramXyzDef","type":"Interface"},{"name":"IRadiusCompensationDef","href":"Hi.NcParsers.Keywords.IRadiusCompensationDef.html","topicHref":"Hi.NcParsers.Keywords.IRadiusCompensationDef.html","topicUid":"Hi.NcParsers.Keywords.IRadiusCompensationDef","type":"Interface"},{"name":"ISpindleControlDef","href":"Hi.NcParsers.Keywords.ISpindleControlDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleControlDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleControlDef","type":"Interface"},{"name":"ISpindleOrientationDef","href":"Hi.NcParsers.Keywords.ISpindleOrientationDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleOrientationDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleOrientationDef","type":"Interface"},{"name":"ISpindleSpeedDef","href":"Hi.NcParsers.Keywords.ISpindleSpeedDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleSpeedDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleSpeedDef","type":"Interface"},{"name":"ITiltTransformDef","href":"Hi.NcParsers.Keywords.ITiltTransformDef.html","topicHref":"Hi.NcParsers.Keywords.ITiltTransformDef.html","topicUid":"Hi.NcParsers.Keywords.ITiltTransformDef","type":"Interface"},{"name":"IToolHeightCompensationDef","href":"Hi.NcParsers.Keywords.IToolHeightCompensationDef.html","topicHref":"Hi.NcParsers.Keywords.IToolHeightCompensationDef.html","topicUid":"Hi.NcParsers.Keywords.IToolHeightCompensationDef","type":"Interface"},{"name":"ITransformationDef","href":"Hi.NcParsers.Keywords.ITransformationDef.html","topicHref":"Hi.NcParsers.Keywords.ITransformationDef.html","topicUid":"Hi.NcParsers.Keywords.ITransformationDef","type":"Interface"},{"name":"IUnitDef","href":"Hi.NcParsers.Keywords.IUnitDef.html","topicHref":"Hi.NcParsers.Keywords.IUnitDef.html","topicUid":"Hi.NcParsers.Keywords.IUnitDef","type":"Interface"},{"name":"IUnparsedTextDef","href":"Hi.NcParsers.Keywords.IUnparsedTextDef.html","topicHref":"Hi.NcParsers.Keywords.IUnparsedTextDef.html","topicUid":"Hi.NcParsers.Keywords.IUnparsedTextDef","type":"Interface"},{"name":"IndexNote","href":"Hi.NcParsers.Keywords.IndexNote.html","topicHref":"Hi.NcParsers.Keywords.IndexNote.html","topicUid":"Hi.NcParsers.Keywords.IndexNote","type":"Class"},{"name":"IsoLocalCoordinateOffset","href":"Hi.NcParsers.Keywords.IsoLocalCoordinateOffset.html","topicHref":"Hi.NcParsers.Keywords.IsoLocalCoordinateOffset.html","topicUid":"Hi.NcParsers.Keywords.IsoLocalCoordinateOffset","type":"Class"},{"name":"MachineCoordinateState","href":"Hi.NcParsers.Keywords.MachineCoordinateState.html","topicHref":"Hi.NcParsers.Keywords.MachineCoordinateState.html","topicUid":"Hi.NcParsers.Keywords.MachineCoordinateState","type":"Class"},{"name":"MotionEvent","href":"Hi.NcParsers.Keywords.MotionEvent.html","topicHref":"Hi.NcParsers.Keywords.MotionEvent.html","topicUid":"Hi.NcParsers.Keywords.MotionEvent","type":"Class"},{"name":"MotionState","href":"Hi.NcParsers.Keywords.MotionState.html","topicHref":"Hi.NcParsers.Keywords.MotionState.html","topicUid":"Hi.NcParsers.Keywords.MotionState","type":"Class"},{"name":"PathSmoothing","href":"Hi.NcParsers.Keywords.PathSmoothing.html","topicHref":"Hi.NcParsers.Keywords.PathSmoothing.html","topicUid":"Hi.NcParsers.Keywords.PathSmoothing","type":"Class"},{"name":"PlaneSelect","href":"Hi.NcParsers.Keywords.PlaneSelect.html","topicHref":"Hi.NcParsers.Keywords.PlaneSelect.html","topicUid":"Hi.NcParsers.Keywords.PlaneSelect","type":"Class"},{"name":"Positioning","href":"Hi.NcParsers.Keywords.Positioning.html","topicHref":"Hi.NcParsers.Keywords.Positioning.html","topicUid":"Hi.NcParsers.Keywords.Positioning","type":"Class"},{"name":"ProgramEnd","href":"Hi.NcParsers.Keywords.ProgramEnd.html","topicHref":"Hi.NcParsers.Keywords.ProgramEnd.html","topicUid":"Hi.NcParsers.Keywords.ProgramEnd","type":"Class"},{"name":"ProgramStop","href":"Hi.NcParsers.Keywords.ProgramStop.html","topicHref":"Hi.NcParsers.Keywords.ProgramStop.html","topicUid":"Hi.NcParsers.Keywords.ProgramStop","type":"Class"},{"name":"RadiusCompensation","href":"Hi.NcParsers.Keywords.RadiusCompensation.html","topicHref":"Hi.NcParsers.Keywords.RadiusCompensation.html","topicUid":"Hi.NcParsers.Keywords.RadiusCompensation","type":"Class"},{"name":"SpindleControl","href":"Hi.NcParsers.Keywords.SpindleControl.html","topicHref":"Hi.NcParsers.Keywords.SpindleControl.html","topicUid":"Hi.NcParsers.Keywords.SpindleControl","type":"Class"},{"name":"SpindleOrientation","href":"Hi.NcParsers.Keywords.SpindleOrientation.html","topicHref":"Hi.NcParsers.Keywords.SpindleOrientation.html","topicUid":"Hi.NcParsers.Keywords.SpindleOrientation","type":"Class"},{"name":"SpindleSpeed","href":"Hi.NcParsers.Keywords.SpindleSpeed.html","topicHref":"Hi.NcParsers.Keywords.SpindleSpeed.html","topicUid":"Hi.NcParsers.Keywords.SpindleSpeed","type":"Class"},{"name":"SubProgramCall","href":"Hi.NcParsers.Keywords.SubProgramCall.html","topicHref":"Hi.NcParsers.Keywords.SubProgramCall.html","topicUid":"Hi.NcParsers.Keywords.SubProgramCall","type":"Class"},{"name":"SubProgramReturn","href":"Hi.NcParsers.Keywords.SubProgramReturn.html","topicHref":"Hi.NcParsers.Keywords.SubProgramReturn.html","topicUid":"Hi.NcParsers.Keywords.SubProgramReturn","type":"Class"},{"name":"TapeBoundary","href":"Hi.NcParsers.Keywords.TapeBoundary.html","topicHref":"Hi.NcParsers.Keywords.TapeBoundary.html","topicUid":"Hi.NcParsers.Keywords.TapeBoundary","type":"Class"},{"name":"TiltTransform","href":"Hi.NcParsers.Keywords.TiltTransform.html","topicHref":"Hi.NcParsers.Keywords.TiltTransform.html","topicUid":"Hi.NcParsers.Keywords.TiltTransform","type":"Class"},{"name":"ToolHeightCompensation","href":"Hi.NcParsers.Keywords.ToolHeightCompensation.html","topicHref":"Hi.NcParsers.Keywords.ToolHeightCompensation.html","topicUid":"Hi.NcParsers.Keywords.ToolHeightCompensation","type":"Class"},{"name":"Unit","href":"Hi.NcParsers.Keywords.Unit.html","topicHref":"Hi.NcParsers.Keywords.Unit.html","topicUid":"Hi.NcParsers.Keywords.Unit","type":"Class"},{"name":"Vars","href":"Hi.NcParsers.Keywords.Vars.html","topicHref":"Hi.NcParsers.Keywords.Vars.html","topicUid":"Hi.NcParsers.Keywords.Vars","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Fanuc","href":"Hi.NcParsers.Keywords.Fanuc.html","topicHref":"Hi.NcParsers.Keywords.Fanuc.html","topicUid":"Hi.NcParsers.Keywords.Fanuc","type":"Namespace","items":[{"name":"FanucKeywords","href":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html","topicHref":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html","topicUid":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Generic","href":"Hi.NcParsers.Keywords.Generic.html","topicHref":"Hi.NcParsers.Keywords.Generic.html","topicUid":"Hi.NcParsers.Keywords.Generic","type":"Namespace","items":[{"name":"IsoKeywords","href":"Hi.NcParsers.Keywords.Generic.IsoKeywords.html","topicHref":"Hi.NcParsers.Keywords.Generic.IsoKeywords.html","topicUid":"Hi.NcParsers.Keywords.Generic.IsoKeywords","type":"Class"},{"name":"MotionForm","href":"Hi.NcParsers.Keywords.Generic.MotionForm.html","topicHref":"Hi.NcParsers.Keywords.Generic.MotionForm.html","topicUid":"Hi.NcParsers.Keywords.Generic.MotionForm","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Heidenhain","href":"Hi.NcParsers.Keywords.Heidenhain.html","topicHref":"Hi.NcParsers.Keywords.Heidenhain.html","topicUid":"Hi.NcParsers.Keywords.Heidenhain","type":"Namespace","items":[{"name":"ICyclDef","href":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html","topicHref":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html","topicUid":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef","type":"Interface"}]},{"name":"Hi.NcParsers.Keywords.Siemens","href":"Hi.NcParsers.Keywords.Siemens.html","topicHref":"Hi.NcParsers.Keywords.Siemens.html","topicUid":"Hi.NcParsers.Keywords.Siemens","type":"Namespace","items":[{"name":"SiemensKeywords","href":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html","topicHref":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html","topicUid":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs","href":"Hi.NcParsers.LogicSyntaxs.html","topicHref":"Hi.NcParsers.LogicSyntaxs.html","topicUid":"Hi.NcParsers.LogicSyntaxs","type":"Namespace","items":[{"name":"BackBoringSyntax","href":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax","type":"Class"},{"name":"BoringCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax","type":"Class"},{"name":"CannedCycleResolveSyntax","href":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax","type":"Class"},{"name":"CircularMotionSyntax","href":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax","type":"Class"},{"name":"CoolantSyntax","href":"Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CoolantSyntax","type":"Class"},{"name":"CoordinateOffsetUtil","href":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil","type":"Class"},{"name":"DrillingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax","type":"Class"},{"name":"FanucPathSmoothingSyntax","href":"Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax","type":"Class"},{"name":"FeedrateSyntax","href":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax","type":"Class"},{"name":"FineBoringSyntax","href":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax","type":"Class"},{"name":"G43p4RtcpSyntax","href":"Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax","type":"Class"},{"name":"G53p1RotaryPositionSyntax","href":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax","type":"Class"},{"name":"HighSpeedPeckCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax","type":"Class"},{"name":"IncrementalResolveSyntax","href":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax","type":"Class"},{"name":"IsoCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax","type":"Class"},{"name":"IsoG68RotationSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax","type":"Class"},{"name":"IsoG68p2TiltSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax","type":"Class"},{"name":"IsoLocalCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax","type":"Class"},{"name":"LinearMotionSyntax","href":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax","type":"Class"},{"name":"MachineCoordSelectSyntax","href":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax","type":"Class"},{"name":"McAbcCyclicPathSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax","type":"Class"},{"name":"McAbcSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax","type":"Class"},{"name":"McAbcXyzFallbackSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax","type":"Class"},{"name":"McXyzSyntax","href":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax","type":"Class"},{"name":"PeckDrillingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax","type":"Class"},{"name":"PivotTransformationSyntax","href":"Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax","type":"Class"},{"name":"PlaneSelectSyntax","href":"Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax","type":"Class"},{"name":"PositioningSyntax","href":"Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PositioningSyntax","type":"Class"},{"name":"ProgramEndCleanSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax","type":"Class"},{"name":"ProgramEndSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax","type":"Class"},{"name":"ProgramStopSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax","type":"Class"},{"name":"ProgramXyzSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax","type":"Class"},{"name":"ProgramXyzUtil","href":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil","type":"Class"},{"name":"ReferenceReturnSyntax","href":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax","type":"Class"},{"name":"RotaryAxisUtil","href":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil","type":"Class"},{"name":"SpindleSpeedSyntax","href":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax","type":"Class"},{"name":"TappingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax","type":"Class"},{"name":"TiltTransformUtil","href":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil","type":"Class"},{"name":"ToolChangeSyntax","href":"Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax","type":"Class"},{"name":"ToolHeightOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax","type":"Class"},{"name":"UnitModeSyntax","href":"Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.UnitModeSyntax","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs.Heidenhain","href":"Hi.NcParsers.LogicSyntaxs.Heidenhain.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Heidenhain.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs.Siemens","href":"Hi.NcParsers.LogicSyntaxs.Siemens.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Siemens.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Siemens","type":"Namespace","items":[{"name":"SiemensCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs","type":"Namespace","items":[{"name":"BlockSkipSyntax","href":"Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax","type":"Class"},{"name":"CsScriptSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax","type":"Class"},{"name":"FanucProgramNumberSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax","type":"Class"},{"name":"FlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax","type":"Class"},{"name":"FloatTagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax","type":"Class"},{"name":"HeadIndexSyntax","href":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax","type":"Class"},{"name":"IntegerTagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax","type":"Class"},{"name":"NamedVarAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax","type":"Class"},{"name":"NumberedFlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax","type":"Class"},{"name":"ParameterizedFlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax","type":"Class"},{"name":"ShrinkIfNoDecimalPointSyntax","href":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax","type":"Class"},{"name":"TagAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax","type":"Class"},{"name":"TagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax","type":"Class"},{"name":"TapeBoundarySyntax","href":"Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs","type":"Namespace","items":[{"name":"QuoteCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax","type":"Class"},{"name":"TailCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Heidenhain","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainBlkFormSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax","type":"Class"},{"name":"HeidenhainCallSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax","type":"Class"},{"name":"HeidenhainCyclDefSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax","type":"Class"},{"name":"HeidenhainFnAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax","type":"Class"},{"name":"HeidenhainLSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax","type":"Class"},{"name":"HeidenhainLblSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax","type":"Class"},{"name":"HeidenhainPlaneSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax","type":"Class"},{"name":"HeidenhainProgramSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax","type":"Class"},{"name":"HeidenhainToolCallSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs","type":"Namespace","items":[{"name":"HeidenhainDatumSettingSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax","type":"Class"},{"name":"HeidenhainDatumShiftSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax","type":"Class"}]},{"name":"Hi.NcParsers.PostLogicSyntaxs","href":"Hi.NcParsers.PostLogicSyntaxs.html","topicHref":"Hi.NcParsers.PostLogicSyntaxs.html","topicUid":"Hi.NcParsers.PostLogicSyntaxs","type":"Namespace","items":[{"name":"ModalCarrySyntax","href":"Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html","topicHref":"Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html","topicUid":"Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax","type":"Class"},{"name":"RadiusCompensationSyntax","href":"Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html","topicHref":"Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html","topicUid":"Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax","type":"Class"}]},{"name":"Hi.NcParsers.Segmenters","href":"Hi.NcParsers.Segmenters.html","topicHref":"Hi.NcParsers.Segmenters.html","topicUid":"Hi.NcParsers.Segmenters","type":"Namespace","items":[{"name":"HeidenhainSegmenter","href":"Hi.NcParsers.Segmenters.HeidenhainSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.HeidenhainSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.HeidenhainSegmenter","type":"Class"},{"name":"ISegmenter","href":"Hi.NcParsers.Segmenters.ISegmenter.html","topicHref":"Hi.NcParsers.Segmenters.ISegmenter.html","topicUid":"Hi.NcParsers.Segmenters.ISegmenter","type":"Interface"},{"name":"InlineDelimiterSegmenter","href":"Hi.NcParsers.Segmenters.InlineDelimiterSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.InlineDelimiterSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.InlineDelimiterSegmenter","type":"Class"},{"name":"SingleLineSegmenter","href":"Hi.NcParsers.Segmenters.SingleLineSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.SingleLineSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.SingleLineSegmenter","type":"Class"}]},{"name":"Hi.NcParsers.Semantics","href":"Hi.NcParsers.Semantics.html","topicHref":"Hi.NcParsers.Semantics.html","topicUid":"Hi.NcParsers.Semantics","type":"Namespace","items":[{"name":"ClLinearMotionSemantic","href":"Hi.NcParsers.Semantics.ClLinearMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.ClLinearMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.ClLinearMotionSemantic","type":"Class"},{"name":"CompoundMotionSemantic","href":"Hi.NcParsers.Semantics.CompoundMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.CompoundMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.CompoundMotionSemantic","type":"Class"},{"name":"CoolantSemantic","href":"Hi.NcParsers.Semantics.CoolantSemantic.html","topicHref":"Hi.NcParsers.Semantics.CoolantSemantic.html","topicUid":"Hi.NcParsers.Semantics.CoolantSemantic","type":"Class"},{"name":"CsScriptBeginSemantic","href":"Hi.NcParsers.Semantics.CsScriptBeginSemantic.html","topicHref":"Hi.NcParsers.Semantics.CsScriptBeginSemantic.html","topicUid":"Hi.NcParsers.Semantics.CsScriptBeginSemantic","type":"Class"},{"name":"CsScriptEndSemantic","href":"Hi.NcParsers.Semantics.CsScriptEndSemantic.html","topicHref":"Hi.NcParsers.Semantics.CsScriptEndSemantic.html","topicUid":"Hi.NcParsers.Semantics.CsScriptEndSemantic","type":"Class"},{"name":"CsScriptSemantic","href":"Hi.NcParsers.Semantics.CsScriptSemantic.html","topicHref":"Hi.NcParsers.Semantics.CsScriptSemantic.html","topicUid":"Hi.NcParsers.Semantics.CsScriptSemantic","type":"Class"},{"name":"INcSemantic","href":"Hi.NcParsers.Semantics.INcSemantic.html","topicHref":"Hi.NcParsers.Semantics.INcSemantic.html","topicUid":"Hi.NcParsers.Semantics.INcSemantic","type":"Interface"},{"name":"MachineCoordinateStepSemantic","href":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html","topicHref":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html","topicUid":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic","type":"Class"},{"name":"McArcMotionSemantic","href":"Hi.NcParsers.Semantics.McArcMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.McArcMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.McArcMotionSemantic","type":"Class"},{"name":"McLinearMotionSemantic","href":"Hi.NcParsers.Semantics.McLinearMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.McLinearMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.McLinearMotionSemantic","type":"Class"},{"name":"SpindleSpeedSemantic","href":"Hi.NcParsers.Semantics.SpindleSpeedSemantic.html","topicHref":"Hi.NcParsers.Semantics.SpindleSpeedSemantic.html","topicUid":"Hi.NcParsers.Semantics.SpindleSpeedSemantic","type":"Class"},{"name":"StrokeLimitCheckSemantic","href":"Hi.NcParsers.Semantics.StrokeLimitCheckSemantic.html","topicHref":"Hi.NcParsers.Semantics.StrokeLimitCheckSemantic.html","topicUid":"Hi.NcParsers.Semantics.StrokeLimitCheckSemantic","type":"Class"},{"name":"ToolChangeSemantic","href":"Hi.NcParsers.Semantics.ToolChangeSemantic.html","topicHref":"Hi.NcParsers.Semantics.ToolChangeSemantic.html","topicUid":"Hi.NcParsers.Semantics.ToolChangeSemantic","type":"Class"}]},{"name":"Hi.NcParsers.Syntaxs","href":"Hi.NcParsers.Syntaxs.html","topicHref":"Hi.NcParsers.Syntaxs.html","topicUid":"Hi.NcParsers.Syntaxs","type":"Namespace","items":[{"name":"BundleSyntax","href":"Hi.NcParsers.Syntaxs.BundleSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.BundleSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.BundleSyntax","type":"Class"},{"name":"FanucSyntaxUtil","href":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil","type":"Class"},{"name":"GenericSyntaxKit","href":"Hi.NcParsers.Syntaxs.GenericSyntaxKit.html","topicHref":"Hi.NcParsers.Syntaxs.GenericSyntaxKit.html","topicUid":"Hi.NcParsers.Syntaxs.GenericSyntaxKit","type":"Class"},{"name":"HeidenhainSyntaxUtil","href":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil","type":"Class"},{"name":"IExpandingNcSyntax","href":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax","type":"Interface"},{"name":"INcSyntax","href":"Hi.NcParsers.Syntaxs.INcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.INcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.INcSyntax","type":"Interface"},{"name":"ISituNcSyntax","href":"Hi.NcParsers.Syntaxs.ISituNcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.ISituNcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.ISituNcSyntax","type":"Interface"},{"name":"MazakSyntaxUtil","href":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil","type":"Class"},{"name":"NcSyntaxUtil","href":"Hi.NcParsers.Syntaxs.NcSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.NcSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.NcSyntaxUtil","type":"Class"},{"name":"SiemensSyntaxUtil","href":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil","type":"Class"},{"name":"SyntaxPiece","href":"Hi.NcParsers.Syntaxs.SyntaxPiece.html","topicHref":"Hi.NcParsers.Syntaxs.SyntaxPiece.html","topicUid":"Hi.NcParsers.Syntaxs.SyntaxPiece","type":"Class"},{"name":"SyntaxStageKeys","href":"Hi.NcParsers.Syntaxs.SyntaxStageKeys.html","topicHref":"Hi.NcParsers.Syntaxs.SyntaxStageKeys.html","topicUid":"Hi.NcParsers.Syntaxs.SyntaxStageKeys","type":"Class"},{"name":"SyntecSyntaxUtil","href":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil","type":"Class"},{"name":"TagValue","href":"Hi.NcParsers.Syntaxs.TagValue.html","topicHref":"Hi.NcParsers.Syntaxs.TagValue.html","topicUid":"Hi.NcParsers.Syntaxs.TagValue","type":"Class"},{"name":"TransformationUtil","href":"Hi.NcParsers.Syntaxs.TransformationUtil.html","topicHref":"Hi.NcParsers.Syntaxs.TransformationUtil.html","topicUid":"Hi.NcParsers.Syntaxs.TransformationUtil","type":"Class"}]},{"name":"Hi.Numerical","href":"Hi.Numerical.html","topicHref":"Hi.Numerical.html","topicUid":"Hi.Numerical","type":"Namespace","items":[{"name":"CncBrand","href":"Hi.Numerical.CncBrand.html","topicHref":"Hi.Numerical.CncBrand.html","topicUid":"Hi.Numerical.CncBrand","type":"Enum"},{"name":"CommentMark","href":"Hi.Numerical.CommentMark.html","topicHref":"Hi.Numerical.CommentMark.html","topicUid":"Hi.Numerical.CommentMark","type":"Enum"},{"name":"CoolantMode","href":"Hi.Numerical.CoolantMode.html","topicHref":"Hi.Numerical.CoolantMode.html","topicUid":"Hi.Numerical.CoolantMode","type":"Enum"},{"name":"CoordinateInterpolationMode","href":"Hi.Numerical.CoordinateInterpolationMode.html","topicHref":"Hi.Numerical.CoordinateInterpolationMode.html","topicUid":"Hi.Numerical.CoordinateInterpolationMode","type":"Enum"},{"name":"FlexDictionaryUtil","href":"Hi.Numerical.FlexDictionaryUtil.html","topicHref":"Hi.Numerical.FlexDictionaryUtil.html","topicUid":"Hi.Numerical.FlexDictionaryUtil","type":"Class"},{"name":"HardNcComment","href":"Hi.Numerical.HardNcComment.html","topicHref":"Hi.Numerical.HardNcComment.html","topicUid":"Hi.Numerical.HardNcComment","type":"Class"},{"name":"HardNcEnv","href":"Hi.Numerical.HardNcEnv.html","topicHref":"Hi.Numerical.HardNcEnv.html","topicUid":"Hi.Numerical.HardNcEnv","type":"Class"},{"name":"HardNcLine","href":"Hi.Numerical.HardNcLine.html","topicHref":"Hi.Numerical.HardNcLine.html","topicUid":"Hi.Numerical.HardNcLine","type":"Class"},{"name":"HardNcUtil","href":"Hi.Numerical.HardNcUtil.html","topicHref":"Hi.Numerical.HardNcUtil.html","topicUid":"Hi.Numerical.HardNcUtil","type":"Class"},{"name":"HeidenhainCoordinateEntryDisplayee","href":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee","type":"Class"},{"name":"IControlRunner","href":"Hi.Numerical.IControlRunner.html","topicHref":"Hi.Numerical.IControlRunner.html","topicUid":"Hi.Numerical.IControlRunner","type":"Interface"},{"name":"IFlexDictionaryHost","href":"Hi.Numerical.IFlexDictionaryHost-1.html","topicHref":"Hi.Numerical.IFlexDictionaryHost-1.html","topicUid":"Hi.Numerical.IFlexDictionaryHost`1","type":"Interface"},{"name":"IGetFeedrate","href":"Hi.Numerical.IGetFeedrate.html","topicHref":"Hi.Numerical.IGetFeedrate.html","topicUid":"Hi.Numerical.IGetFeedrate","type":"Interface"},{"name":"IGetSpindleSpeed","href":"Hi.Numerical.IGetSpindleSpeed.html","topicHref":"Hi.Numerical.IGetSpindleSpeed.html","topicUid":"Hi.Numerical.IGetSpindleSpeed","type":"Interface"},{"name":"ISetFeedrate","href":"Hi.Numerical.ISetFeedrate.html","topicHref":"Hi.Numerical.ISetFeedrate.html","topicUid":"Hi.Numerical.ISetFeedrate","type":"Interface"},{"name":"ISetSpindleSpeed","href":"Hi.Numerical.ISetSpindleSpeed.html","topicHref":"Hi.Numerical.ISetSpindleSpeed.html","topicUid":"Hi.Numerical.ISetSpindleSpeed","type":"Interface"},{"name":"IsoCoordinateEntryDisplayee","href":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.IsoCoordinateEntryDisplayee","type":"Class"},{"name":"MechNcUtil","href":"Hi.Numerical.MechNcUtil.html","topicHref":"Hi.Numerical.MechNcUtil.html","topicUid":"Hi.Numerical.MechNcUtil","type":"Class"},{"name":"MillingToolOffsetTable","href":"Hi.Numerical.MillingToolOffsetTable.html","topicHref":"Hi.Numerical.MillingToolOffsetTable.html","topicUid":"Hi.Numerical.MillingToolOffsetTable","type":"Class"},{"name":"MillingToolOffsetTableRow","href":"Hi.Numerical.MillingToolOffsetTableRow.html","topicHref":"Hi.Numerical.MillingToolOffsetTableRow.html","topicUid":"Hi.Numerical.MillingToolOffsetTableRow","type":"Class"},{"name":"NcFlag","href":"Hi.Numerical.NcFlag.html","topicHref":"Hi.Numerical.NcFlag.html","topicUid":"Hi.Numerical.NcFlag","type":"Enum"},{"name":"NcFlagUtil","href":"Hi.Numerical.NcFlagUtil.html","topicHref":"Hi.Numerical.NcFlagUtil.html","topicUid":"Hi.Numerical.NcFlagUtil","type":"Class"},{"name":"NcGroup00","href":"Hi.Numerical.NcGroup00.html","topicHref":"Hi.Numerical.NcGroup00.html","topicUid":"Hi.Numerical.NcGroup00","type":"Enum"},{"name":"NcGroup01","href":"Hi.Numerical.NcGroup01.html","topicHref":"Hi.Numerical.NcGroup01.html","topicUid":"Hi.Numerical.NcGroup01","type":"Enum"},{"name":"NcGroup02","href":"Hi.Numerical.NcGroup02.html","topicHref":"Hi.Numerical.NcGroup02.html","topicUid":"Hi.Numerical.NcGroup02","type":"Enum"},{"name":"NcGroup03","href":"Hi.Numerical.NcGroup03.html","topicHref":"Hi.Numerical.NcGroup03.html","topicUid":"Hi.Numerical.NcGroup03","type":"Enum"},{"name":"NcGroup05","href":"Hi.Numerical.NcGroup05.html","topicHref":"Hi.Numerical.NcGroup05.html","topicUid":"Hi.Numerical.NcGroup05","type":"Enum"},{"name":"NcGroup06","href":"Hi.Numerical.NcGroup06.html","topicHref":"Hi.Numerical.NcGroup06.html","topicUid":"Hi.Numerical.NcGroup06","type":"Enum"},{"name":"NcGroup07","href":"Hi.Numerical.NcGroup07.html","topicHref":"Hi.Numerical.NcGroup07.html","topicUid":"Hi.Numerical.NcGroup07","type":"Enum"},{"name":"NcGroup08","href":"Hi.Numerical.NcGroup08.html","topicHref":"Hi.Numerical.NcGroup08.html","topicUid":"Hi.Numerical.NcGroup08","type":"Enum"},{"name":"NcGroup09","href":"Hi.Numerical.NcGroup09.html","topicHref":"Hi.Numerical.NcGroup09.html","topicUid":"Hi.Numerical.NcGroup09","type":"Enum"},{"name":"NcGroup10","href":"Hi.Numerical.NcGroup10.html","topicHref":"Hi.Numerical.NcGroup10.html","topicUid":"Hi.Numerical.NcGroup10","type":"Enum"},{"name":"NcGroup13","href":"Hi.Numerical.NcGroup13.html","topicHref":"Hi.Numerical.NcGroup13.html","topicUid":"Hi.Numerical.NcGroup13","type":"Enum"},{"name":"NcGroup14","href":"Hi.Numerical.NcGroup14.html","topicHref":"Hi.Numerical.NcGroup14.html","topicUid":"Hi.Numerical.NcGroup14","type":"Enum"},{"name":"NcGroup15","href":"Hi.Numerical.NcGroup15.html","topicHref":"Hi.Numerical.NcGroup15.html","topicUid":"Hi.Numerical.NcGroup15","type":"Enum"},{"name":"NcGroup16","href":"Hi.Numerical.NcGroup16.html","topicHref":"Hi.Numerical.NcGroup16.html","topicUid":"Hi.Numerical.NcGroup16","type":"Enum"},{"name":"NcGroup21","href":"Hi.Numerical.NcGroup21.html","topicHref":"Hi.Numerical.NcGroup21.html","topicUid":"Hi.Numerical.NcGroup21","type":"Enum"},{"name":"NcGroupAttribute","href":"Hi.Numerical.NcGroupAttribute.html","topicHref":"Hi.Numerical.NcGroupAttribute.html","topicUid":"Hi.Numerical.NcGroupAttribute","type":"Class"},{"name":"NcGroupHeidenhainM107M108","href":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicHref":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicUid":"Hi.Numerical.NcGroupHeidenhainM107M108","type":"Enum"},{"name":"NcGroupHeidenhainPlane","href":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicHref":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicUid":"Hi.Numerical.NcGroupHeidenhainPlane","type":"Enum"},{"name":"NcGroupHeidenhainShortestRotaryPath","href":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicHref":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicUid":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath","type":"Enum"},{"name":"NcGroupSpindleRotation","href":"Hi.Numerical.NcGroupSpindleRotation.html","topicHref":"Hi.Numerical.NcGroupSpindleRotation.html","topicUid":"Hi.Numerical.NcGroupSpindleRotation","type":"Enum"},{"name":"NcLifeCycleAttribute","href":"Hi.Numerical.NcLifeCycleAttribute.html","topicHref":"Hi.Numerical.NcLifeCycleAttribute.html","topicUid":"Hi.Numerical.NcLifeCycleAttribute","type":"Class"},{"name":"NcLifeCycleMode","href":"Hi.Numerical.NcLifeCycleMode.html","topicHref":"Hi.Numerical.NcLifeCycleMode.html","topicUid":"Hi.Numerical.NcLifeCycleMode","type":"Enum"},{"name":"NcNameAttribute","href":"Hi.Numerical.NcNameAttribute.html","topicHref":"Hi.Numerical.NcNameAttribute.html","topicUid":"Hi.Numerical.NcNameAttribute","type":"Class"},{"name":"NcNoteCache","href":"Hi.Numerical.NcNoteCache.html","topicHref":"Hi.Numerical.NcNoteCache.html","topicUid":"Hi.Numerical.NcNoteCache","type":"Class"},{"name":"NcProc","href":"Hi.Numerical.NcProc.html","topicHref":"Hi.Numerical.NcProc.html","topicUid":"Hi.Numerical.NcProc","type":"Class"},{"name":"NcWarningSceneEnum","href":"Hi.Numerical.NcWarningSceneEnum.html","topicHref":"Hi.Numerical.NcWarningSceneEnum.html","topicUid":"Hi.Numerical.NcWarningSceneEnum","type":"Enum"},{"name":"NumericUtil","href":"Hi.Numerical.NumericUtil.html","topicHref":"Hi.Numerical.NumericUtil.html","topicUid":"Hi.Numerical.NumericUtil","type":"Class"},{"name":"PolarEntry","href":"Hi.Numerical.PolarEntry.html","topicHref":"Hi.Numerical.PolarEntry.html","topicUid":"Hi.Numerical.PolarEntry","type":"Class"},{"name":"RadiusCompensationBuf","href":"Hi.Numerical.RadiusCompensationBuf.html","topicHref":"Hi.Numerical.RadiusCompensationBuf.html","topicUid":"Hi.Numerical.RadiusCompensationBuf","type":"Class"},{"name":"SourcedActEntry","href":"Hi.Numerical.SourcedActEntry.html","topicHref":"Hi.Numerical.SourcedActEntry.html","topicUid":"Hi.Numerical.SourcedActEntry","type":"Class"},{"name":"SpindleDirection","href":"Hi.Numerical.SpindleDirection.html","topicHref":"Hi.Numerical.SpindleDirection.html","topicUid":"Hi.Numerical.SpindleDirection","type":"Enum"},{"name":"SubStringKit","href":"Hi.Numerical.SubStringKit.html","topicHref":"Hi.Numerical.SubStringKit.html","topicUid":"Hi.Numerical.SubStringKit","type":"Class"},{"name":"SubStringKit.ActivationMode","href":"Hi.Numerical.SubStringKit.ActivationMode.html","topicHref":"Hi.Numerical.SubStringKit.ActivationMode.html","topicUid":"Hi.Numerical.SubStringKit.ActivationMode","type":"Enum"},{"name":"ToolConfigNotFoundException","href":"Hi.Numerical.ToolConfigNotFoundException.html","topicHref":"Hi.Numerical.ToolConfigNotFoundException.html","topicUid":"Hi.Numerical.ToolConfigNotFoundException","type":"Class"}]},{"name":"Hi.Numerical.Acts","href":"Hi.Numerical.Acts.html","topicHref":"Hi.Numerical.Acts.html","topicUid":"Hi.Numerical.Acts","type":"Namespace","items":[{"name":"ActActualTime","href":"Hi.Numerical.Acts.ActActualTime.html","topicHref":"Hi.Numerical.Acts.ActActualTime.html","topicUid":"Hi.Numerical.Acts.ActActualTime","type":"Class"},{"name":"ActClArc","href":"Hi.Numerical.Acts.ActClArc.html","topicHref":"Hi.Numerical.Acts.ActClArc.html","topicUid":"Hi.Numerical.Acts.ActClArc","type":"Class"},{"name":"ActClDerivedMcXyzabcContour","href":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour","type":"Class"},{"name":"ActClLinear","href":"Hi.Numerical.Acts.ActClLinear.html","topicHref":"Hi.Numerical.Acts.ActClLinear.html","topicUid":"Hi.Numerical.Acts.ActClLinear","type":"Class"},{"name":"ActClStep","href":"Hi.Numerical.Acts.ActClStep.html","topicHref":"Hi.Numerical.Acts.ActClStep.html","topicUid":"Hi.Numerical.Acts.ActClStep","type":"Class"},{"name":"ActClTeleport","href":"Hi.Numerical.Acts.ActClTeleport.html","topicHref":"Hi.Numerical.Acts.ActClTeleport.html","topicUid":"Hi.Numerical.Acts.ActClTeleport","type":"Class"},{"name":"ActCooling","href":"Hi.Numerical.Acts.ActCooling.html","topicHref":"Hi.Numerical.Acts.ActCooling.html","topicUid":"Hi.Numerical.Acts.ActCooling","type":"Class"},{"name":"ActData","href":"Hi.Numerical.Acts.ActData.html","topicHref":"Hi.Numerical.Acts.ActData.html","topicUid":"Hi.Numerical.Acts.ActData","type":"Class"},{"name":"ActDelay","href":"Hi.Numerical.Acts.ActDelay.html","topicHref":"Hi.Numerical.Acts.ActDelay.html","topicUid":"Hi.Numerical.Acts.ActDelay","type":"Class"},{"name":"ActFeedrate","href":"Hi.Numerical.Acts.ActFeedrate.html","topicHref":"Hi.Numerical.Acts.ActFeedrate.html","topicUid":"Hi.Numerical.Acts.ActFeedrate","type":"Class"},{"name":"ActHiddenStateChanged","href":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicHref":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicUid":"Hi.Numerical.Acts.ActHiddenStateChanged","type":"Class"},{"name":"ActIntentionalSkip","href":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicHref":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicUid":"Hi.Numerical.Acts.ActIntentionalSkip","type":"Class"},{"name":"ActLineBegin","href":"Hi.Numerical.Acts.ActLineBegin.html","topicHref":"Hi.Numerical.Acts.ActLineBegin.html","topicUid":"Hi.Numerical.Acts.ActLineBegin","type":"Class"},{"name":"ActLineCsScript","href":"Hi.Numerical.Acts.ActLineCsScript.html","topicHref":"Hi.Numerical.Acts.ActLineCsScript.html","topicUid":"Hi.Numerical.Acts.ActLineCsScript","type":"Class"},{"name":"ActLineEnd","href":"Hi.Numerical.Acts.ActLineEnd.html","topicHref":"Hi.Numerical.Acts.ActLineEnd.html","topicUid":"Hi.Numerical.Acts.ActLineEnd","type":"Class"},{"name":"ActMcPolarLinearContour","href":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcPolarLinearContour","type":"Class"},{"name":"ActMcXyzLinearContour","href":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzLinearContour","type":"Class"},{"name":"ActMcXyzSpiralContour","href":"Hi.Numerical.Acts.ActMcXyzSpiralContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzSpiralContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzSpiralContour","type":"Class"},{"name":"ActMcXyzStep","href":"Hi.Numerical.Acts.ActMcXyzStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzStep","type":"Class"},{"name":"ActMcXyzabcLinearContour","href":"Hi.Numerical.Acts.ActMcXyzabcLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcLinearContour","type":"Class"},{"name":"ActMcXyzabcStep","href":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcStep","type":"Class"},{"name":"ActRapid","href":"Hi.Numerical.Acts.ActRapid.html","topicHref":"Hi.Numerical.Acts.ActRapid.html","topicUid":"Hi.Numerical.Acts.ActRapid","type":"Class"},{"name":"ActSpindleDirection","href":"Hi.Numerical.Acts.ActSpindleDirection.html","topicHref":"Hi.Numerical.Acts.ActSpindleDirection.html","topicUid":"Hi.Numerical.Acts.ActSpindleDirection","type":"Class"},{"name":"ActSpindleOrientation","href":"Hi.Numerical.Acts.ActSpindleOrientation.html","topicHref":"Hi.Numerical.Acts.ActSpindleOrientation.html","topicUid":"Hi.Numerical.Acts.ActSpindleOrientation","type":"Class"},{"name":"ActSpindleSpeed","href":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicHref":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicUid":"Hi.Numerical.Acts.ActSpindleSpeed","type":"Class"},{"name":"ActToolingStep","href":"Hi.Numerical.Acts.ActToolingStep.html","topicHref":"Hi.Numerical.Acts.ActToolingStep.html","topicUid":"Hi.Numerical.Acts.ActToolingStep","type":"Class"},{"name":"ActToolingTeleport","href":"Hi.Numerical.Acts.ActToolingTeleport.html","topicHref":"Hi.Numerical.Acts.ActToolingTeleport.html","topicUid":"Hi.Numerical.Acts.ActToolingTeleport","type":"Class"},{"name":"ActUnknownSkip","href":"Hi.Numerical.Acts.ActUnknownSkip.html","topicHref":"Hi.Numerical.Acts.ActUnknownSkip.html","topicUid":"Hi.Numerical.Acts.ActUnknownSkip","type":"Class"},{"name":"ActUtil","href":"Hi.Numerical.Acts.ActUtil.html","topicHref":"Hi.Numerical.Acts.ActUtil.html","topicUid":"Hi.Numerical.Acts.ActUtil","type":"Class"},{"name":"IAct","href":"Hi.Numerical.Acts.IAct.html","topicHref":"Hi.Numerical.Acts.IAct.html","topicUid":"Hi.Numerical.Acts.IAct","type":"Interface"},{"name":"IActClMove","href":"Hi.Numerical.Acts.IActClMove.html","topicHref":"Hi.Numerical.Acts.IActClMove.html","topicUid":"Hi.Numerical.Acts.IActClMove","type":"Interface"},{"name":"IActDuration","href":"Hi.Numerical.Acts.IActDuration.html","topicHref":"Hi.Numerical.Acts.IActDuration.html","topicUid":"Hi.Numerical.Acts.IActDuration","type":"Interface"},{"name":"IActMachineStep","href":"Hi.Numerical.Acts.IActMachineStep.html","topicHref":"Hi.Numerical.Acts.IActMachineStep.html","topicUid":"Hi.Numerical.Acts.IActMachineStep","type":"Interface"},{"name":"IActMcXyzContour","href":"Hi.Numerical.Acts.IActMcXyzContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzContour","type":"Interface"},{"name":"IActMcXyzabcContour","href":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzabcContour","type":"Interface"},{"name":"IActSkip","href":"Hi.Numerical.Acts.IActSkip.html","topicHref":"Hi.Numerical.Acts.IActSkip.html","topicUid":"Hi.Numerical.Acts.IActSkip","type":"Interface"},{"name":"IActTooling","href":"Hi.Numerical.Acts.IActTooling.html","topicHref":"Hi.Numerical.Acts.IActTooling.html","topicUid":"Hi.Numerical.Acts.IActTooling","type":"Interface"},{"name":"IWorkTimeAttrib","href":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicHref":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicUid":"Hi.Numerical.Acts.IWorkTimeAttrib","type":"Interface"},{"name":"IWorkTimeGetter","href":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeGetter","type":"Interface"},{"name":"IWorkTimeSetter","href":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeSetter","type":"Interface"},{"name":"StateActRunner","href":"Hi.Numerical.Acts.StateActRunner.html","topicHref":"Hi.Numerical.Acts.StateActRunner.html","topicUid":"Hi.Numerical.Acts.StateActRunner","type":"Class"}]},{"name":"Hi.Numerical.Args","href":"Hi.Numerical.Args.html","topicHref":"Hi.Numerical.Args.html","topicUid":"Hi.Numerical.Args","type":"Namespace","items":[{"name":"OrthogonalPlaneFlag","href":"Hi.Numerical.Args.OrthogonalPlaneFlag.html","topicHref":"Hi.Numerical.Args.OrthogonalPlaneFlag.html","topicUid":"Hi.Numerical.Args.OrthogonalPlaneFlag","type":"Enum"},{"name":"PolarModeDirEnum","href":"Hi.Numerical.Args.PolarModeDirEnum.html","topicHref":"Hi.Numerical.Args.PolarModeDirEnum.html","topicUid":"Hi.Numerical.Args.PolarModeDirEnum","type":"Enum"}]},{"name":"Hi.Numerical.FilePlayers","href":"Hi.Numerical.FilePlayers.html","topicHref":"Hi.Numerical.FilePlayers.html","topicUid":"Hi.Numerical.FilePlayers","type":"Namespace","items":[{"name":"CsvRunner","href":"Hi.Numerical.FilePlayers.CsvRunner.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunner.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunner","type":"Class"},{"name":"CsvRunnerConfig","href":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunnerConfig","type":"Class"},{"name":"HardNcRunner","href":"Hi.Numerical.FilePlayers.HardNcRunner.html","topicHref":"Hi.Numerical.FilePlayers.HardNcRunner.html","topicUid":"Hi.Numerical.FilePlayers.HardNcRunner","type":"Class"}]},{"name":"Hi.Numerical.MachiningMotionResolutionUtils","href":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils","type":"Namespace","items":[{"name":"FeedPerCycleMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution","type":"Class"},{"name":"FeedPerToothMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution","type":"Class"},{"name":"FixedMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution","type":"Class"},{"name":"IMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution","type":"Interface"}]},{"name":"Hi.Numerical.NcArgs","href":"Hi.Numerical.NcArgs.html","topicHref":"Hi.Numerical.NcArgs.html","topicUid":"Hi.Numerical.NcArgs","type":"Namespace","items":[{"name":"ArcNcArg","href":"Hi.Numerical.NcArgs.ArcNcArg.html","topicHref":"Hi.Numerical.NcArgs.ArcNcArg.html","topicUid":"Hi.Numerical.NcArgs.ArcNcArg","type":"Class"},{"name":"G28Arg","href":"Hi.Numerical.NcArgs.G28Arg.html","topicHref":"Hi.Numerical.NcArgs.G28Arg.html","topicUid":"Hi.Numerical.NcArgs.G28Arg","type":"Class"},{"name":"Group07NcArg","href":"Hi.Numerical.NcArgs.Group07NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group07NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group07NcArg","type":"Class"},{"name":"Group09NcArg","href":"Hi.Numerical.NcArgs.Group09NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group09NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group09NcArg","type":"Class"},{"name":"HeidenhainCycleDef7Arg","href":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg","type":"Class"},{"name":"HeidenhainPlaneSpatialArg","href":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg","type":"Class"},{"name":"IHeidenhainBlockCacheArg","href":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg","type":"Interface"},{"name":"IHeidenhainPlaneArg","href":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg","type":"Interface"},{"name":"ITiltPlaneNcArg","href":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicHref":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicUid":"Hi.Numerical.NcArgs.ITiltPlaneNcArg","type":"Interface"},{"name":"NcArgCycle800","href":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicHref":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicUid":"Hi.Numerical.NcArgs.NcArgCycle800","type":"Class"},{"name":"NcArgG68","href":"Hi.Numerical.NcArgs.NcArgG68.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68","type":"Class"},{"name":"NcArgG68p2","href":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68p2","type":"Class"},{"name":"NcArgSiemensFrame","href":"Hi.Numerical.NcArgs.NcArgSiemensFrame.html","topicHref":"Hi.Numerical.NcArgs.NcArgSiemensFrame.html","topicUid":"Hi.Numerical.NcArgs.NcArgSiemensFrame","type":"Class"},{"name":"PausingNcArg","href":"Hi.Numerical.NcArgs.PausingNcArg.html","topicHref":"Hi.Numerical.NcArgs.PausingNcArg.html","topicUid":"Hi.Numerical.NcArgs.PausingNcArg","type":"Class"}]},{"name":"Hi.Numerical.StepSelectionUtils","href":"Hi.Numerical.StepSelectionUtils.html","topicHref":"Hi.Numerical.StepSelectionUtils.html","topicUid":"Hi.Numerical.StepSelectionUtils","type":"Namespace","items":[{"name":"AnchorMode","href":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicHref":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicUid":"Hi.Numerical.StepSelectionUtils.AnchorMode","type":"Enum"},{"name":"BoundSelector","href":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelector","type":"Class"},{"name":"BoundSelectorHost","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost","type":"Class"},{"name":"BoundSelectorPair","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair","type":"Class"},{"name":"BoundSelectorPair.BoundLocale","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale","type":"Enum"},{"name":"BoundSelectorStepSectionBundle","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle","type":"Class"},{"name":"BoundSelectorUtil","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil","type":"Class"},{"name":"DistanceShift","href":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.DistanceShift","type":"Class"},{"name":"IStepShift","href":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.IStepShift","type":"Interface"},{"name":"TimeShift","href":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.TimeShift","type":"Class"}]},{"name":"Hi.Numerical.Xyzabc","href":"Hi.Numerical.Xyzabc.html","topicHref":"Hi.Numerical.Xyzabc.html","topicUid":"Hi.Numerical.Xyzabc","type":"Namespace","items":[{"name":"Abc","href":"Hi.Numerical.Xyzabc.Abc.html","topicHref":"Hi.Numerical.Xyzabc.Abc.html","topicUid":"Hi.Numerical.Xyzabc.Abc","type":"Struct"},{"name":"CodeXyzabcChain","href":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.CodeXyzabcChain","type":"Class"},{"name":"GeneralXyzabcChain","href":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.GeneralXyzabcChain","type":"Class"},{"name":"IGetMcXyzabc","href":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.IGetMcXyzabc","type":"Interface"},{"name":"IGetXyzabcChain","href":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IGetXyzabcChain","type":"Interface"},{"name":"IMachineKinematics","href":"Hi.Numerical.Xyzabc.IMachineKinematics.html","topicHref":"Hi.Numerical.Xyzabc.IMachineKinematics.html","topicUid":"Hi.Numerical.Xyzabc.IMachineKinematics","type":"Interface"},{"name":"ISetMcXyzabc","href":"Hi.Numerical.Xyzabc.ISetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.ISetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.ISetMcXyzabc","type":"Interface"},{"name":"IXyzabcChain","href":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IXyzabcChain","type":"Interface"},{"name":"ReflectedXyzabcChain","href":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain","type":"Class"},{"name":"XyzabcSolver","href":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcSolver","type":"Class"},{"name":"XyzabcUtil","href":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcUtil","type":"Class"}]},{"name":"Hi.PanelModels","href":"Hi.PanelModels.html","topicHref":"Hi.PanelModels.html","topicUid":"Hi.PanelModels","type":"Namespace","items":[{"name":"HiKey","href":"Hi.PanelModels.HiKey.html","topicHref":"Hi.PanelModels.HiKey.html","topicUid":"Hi.PanelModels.HiKey","type":"Enum"},{"name":"HiKeyEvent","href":"Hi.PanelModels.HiKeyEvent.html","topicHref":"Hi.PanelModels.HiKeyEvent.html","topicUid":"Hi.PanelModels.HiKeyEvent","type":"Class"},{"name":"HiModifierKeys","href":"Hi.PanelModels.HiModifierKeys.html","topicHref":"Hi.PanelModels.HiModifierKeys.html","topicUid":"Hi.PanelModels.HiModifierKeys","type":"Enum"},{"name":"HiMouseButton","href":"Hi.PanelModels.HiMouseButton.html","topicHref":"Hi.PanelModels.HiMouseButton.html","topicUid":"Hi.PanelModels.HiMouseButton","type":"Enum"},{"name":"HiMouseButtonEvent","href":"Hi.PanelModels.HiMouseButtonEvent.html","topicHref":"Hi.PanelModels.HiMouseButtonEvent.html","topicUid":"Hi.PanelModels.HiMouseButtonEvent","type":"Class"},{"name":"HiMouseButtonMask","href":"Hi.PanelModels.HiMouseButtonMask.html","topicHref":"Hi.PanelModels.HiMouseButtonMask.html","topicUid":"Hi.PanelModels.HiMouseButtonMask","type":"Enum"},{"name":"HiMouseButtonMaskUtil","href":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicHref":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicUid":"Hi.PanelModels.HiMouseButtonMaskUtil","type":"Class"},{"name":"HiMouseMoveEvent","href":"Hi.PanelModels.HiMouseMoveEvent.html","topicHref":"Hi.PanelModels.HiMouseMoveEvent.html","topicUid":"Hi.PanelModels.HiMouseMoveEvent","type":"Class"},{"name":"HiMouseWheelEvent","href":"Hi.PanelModels.HiMouseWheelEvent.html","topicHref":"Hi.PanelModels.HiMouseWheelEvent.html","topicUid":"Hi.PanelModels.HiMouseWheelEvent","type":"Class"},{"name":"PanelModel","href":"Hi.PanelModels.PanelModel.html","topicHref":"Hi.PanelModels.PanelModel.html","topicUid":"Hi.PanelModels.PanelModel","type":"Class"}]},{"name":"Hi.Parallels","href":"Hi.Parallels.html","topicHref":"Hi.Parallels.html","topicUid":"Hi.Parallels","type":"Namespace","items":[{"name":"CurrentThreadTaskScheduler","href":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicHref":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicUid":"Hi.Parallels.CurrentThreadTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskScheduler","href":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicHref":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicUid":"Hi.Parallels.DistributedQueueTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskStarter","href":"Hi.Parallels.DistributedQueueTaskStarter.html","topicHref":"Hi.Parallels.DistributedQueueTaskStarter.html","topicUid":"Hi.Parallels.DistributedQueueTaskStarter","type":"Class"},{"name":"LockUtil","href":"Hi.Parallels.LockUtil.html","topicHref":"Hi.Parallels.LockUtil.html","topicUid":"Hi.Parallels.LockUtil","type":"Class"},{"name":"PriorityTaskScheduler","href":"Hi.Parallels.PriorityTaskScheduler.html","topicHref":"Hi.Parallels.PriorityTaskScheduler.html","topicUid":"Hi.Parallels.PriorityTaskScheduler","type":"Class"},{"name":"QueueTaskScheduler","href":"Hi.Parallels.QueueTaskScheduler.html","topicHref":"Hi.Parallels.QueueTaskScheduler.html","topicUid":"Hi.Parallels.QueueTaskScheduler","type":"Class"},{"name":"ReaderWriterLockUtil","href":"Hi.Parallels.ReaderWriterLockUtil.html","topicHref":"Hi.Parallels.ReaderWriterLockUtil.html","topicUid":"Hi.Parallels.ReaderWriterLockUtil","type":"Class"},{"name":"SemaphoreUtil","href":"Hi.Parallels.SemaphoreUtil.html","topicHref":"Hi.Parallels.SemaphoreUtil.html","topicUid":"Hi.Parallels.SemaphoreUtil","type":"Class"},{"name":"ThreadSafeSet","href":"Hi.Parallels.ThreadSafeSet-1.html","topicHref":"Hi.Parallels.ThreadSafeSet-1.html","topicUid":"Hi.Parallels.ThreadSafeSet`1","type":"Class"}]},{"name":"Hi.Physics","href":"Hi.Physics.html","topicHref":"Hi.Physics.html","topicUid":"Hi.Physics","type":"Namespace","items":[{"name":"AmpPhase","href":"Hi.Physics.AmpPhase.html","topicHref":"Hi.Physics.AmpPhase.html","topicUid":"Hi.Physics.AmpPhase","type":"Class"},{"name":"CoatingMaterial","href":"Hi.Physics.CoatingMaterial.html","topicHref":"Hi.Physics.CoatingMaterial.html","topicUid":"Hi.Physics.CoatingMaterial","type":"Class"},{"name":"CoolantHeatCondition","href":"Hi.Physics.CoolantHeatCondition.html","topicHref":"Hi.Physics.CoolantHeatCondition.html","topicUid":"Hi.Physics.CoolantHeatCondition","type":"Class"},{"name":"CutterMaterial","href":"Hi.Physics.CutterMaterial.html","topicHref":"Hi.Physics.CutterMaterial.html","topicUid":"Hi.Physics.CutterMaterial","type":"Class"},{"name":"IGetThermalLayerList","href":"Hi.Physics.IGetThermalLayerList.html","topicHref":"Hi.Physics.IGetThermalLayerList.html","topicUid":"Hi.Physics.IGetThermalLayerList","type":"Interface"},{"name":"IStructureMaterial","href":"Hi.Physics.IStructureMaterial.html","topicHref":"Hi.Physics.IStructureMaterial.html","topicUid":"Hi.Physics.IStructureMaterial","type":"Interface"},{"name":"ISuccessivePhysicsBriefAccessor","href":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicHref":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicUid":"Hi.Physics.ISuccessivePhysicsBriefAccessor","type":"Interface"},{"name":"ISurfaceMaterial","href":"Hi.Physics.ISurfaceMaterial.html","topicHref":"Hi.Physics.ISurfaceMaterial.html","topicUid":"Hi.Physics.ISurfaceMaterial","type":"Interface"},{"name":"ITimeGetter","href":"Hi.Physics.ITimeGetter.html","topicHref":"Hi.Physics.ITimeGetter.html","topicUid":"Hi.Physics.ITimeGetter","type":"Interface"},{"name":"MillingTemperatureUtil","href":"Hi.Physics.MillingTemperatureUtil.html","topicHref":"Hi.Physics.MillingTemperatureUtil.html","topicUid":"Hi.Physics.MillingTemperatureUtil","type":"Class"},{"name":"SeqPhysicsBrief","href":"Hi.Physics.SeqPhysicsBrief.html","topicHref":"Hi.Physics.SeqPhysicsBrief.html","topicUid":"Hi.Physics.SeqPhysicsBrief","type":"Class"},{"name":"StructureMaterial","href":"Hi.Physics.StructureMaterial.html","topicHref":"Hi.Physics.StructureMaterial.html","topicUid":"Hi.Physics.StructureMaterial","type":"Class"},{"name":"TemperatureUtil","href":"Hi.Physics.TemperatureUtil.html","topicHref":"Hi.Physics.TemperatureUtil.html","topicUid":"Hi.Physics.TemperatureUtil","type":"Class"},{"name":"TemperatureVsHardness","href":"Hi.Physics.TemperatureVsHardness.html","topicHref":"Hi.Physics.TemperatureVsHardness.html","topicUid":"Hi.Physics.TemperatureVsHardness","type":"Class"},{"name":"ThermalLayer1D","href":"Hi.Physics.ThermalLayer1D.html","topicHref":"Hi.Physics.ThermalLayer1D.html","topicUid":"Hi.Physics.ThermalLayer1D","type":"Class"},{"name":"TimeSeriesUtil","href":"Hi.Physics.TimeSeriesUtil.html","topicHref":"Hi.Physics.TimeSeriesUtil.html","topicUid":"Hi.Physics.TimeSeriesUtil","type":"Class"},{"name":"TimeValue","href":"Hi.Physics.TimeValue.html","topicHref":"Hi.Physics.TimeValue.html","topicUid":"Hi.Physics.TimeValue","type":"Class"},{"name":"WorkpieceMaterial","href":"Hi.Physics.WorkpieceMaterial.html","topicHref":"Hi.Physics.WorkpieceMaterial.html","topicUid":"Hi.Physics.WorkpieceMaterial","type":"Class"}]},{"name":"Hi.SessionCommands","href":"Hi.SessionCommands.html","topicHref":"Hi.SessionCommands.html","topicUid":"Hi.SessionCommands","type":"Namespace","items":[{"name":"EnablingWrapper","href":"Hi.SessionCommands.EnablingWrapper.html","topicHref":"Hi.SessionCommands.EnablingWrapper.html","topicUid":"Hi.SessionCommands.EnablingWrapper","type":"Class"},{"name":"GeomDiffCommand","href":"Hi.SessionCommands.GeomDiffCommand.html","topicHref":"Hi.SessionCommands.GeomDiffCommand.html","topicUid":"Hi.SessionCommands.GeomDiffCommand","type":"Class"},{"name":"ISessionCommand","href":"Hi.SessionCommands.ISessionCommand.html","topicHref":"Hi.SessionCommands.ISessionCommand.html","topicUid":"Hi.SessionCommands.ISessionCommand","type":"Interface"},{"name":"ITitleCommand","href":"Hi.SessionCommands.ITitleCommand.html","topicHref":"Hi.SessionCommands.ITitleCommand.html","topicUid":"Hi.SessionCommands.ITitleCommand","type":"Interface"},{"name":"Lang","href":"Hi.SessionCommands.Lang.html","topicHref":"Hi.SessionCommands.Lang.html","topicUid":"Hi.SessionCommands.Lang","type":"Class"},{"name":"ListCommand","href":"Hi.SessionCommands.ListCommand.html","topicHref":"Hi.SessionCommands.ListCommand.html","topicUid":"Hi.SessionCommands.ListCommand","type":"Class"},{"name":"MachiningMotionResolutionCommand","href":"Hi.SessionCommands.MachiningMotionResolutionCommand.html","topicHref":"Hi.SessionCommands.MachiningMotionResolutionCommand.html","topicUid":"Hi.SessionCommands.MachiningMotionResolutionCommand","type":"Class"},{"name":"NcCodeCommand","href":"Hi.SessionCommands.NcCodeCommand.html","topicHref":"Hi.SessionCommands.NcCodeCommand.html","topicUid":"Hi.SessionCommands.NcCodeCommand","type":"Class"},{"name":"NcFileCommand","href":"Hi.SessionCommands.NcFileCommand.html","topicHref":"Hi.SessionCommands.NcFileCommand.html","topicUid":"Hi.SessionCommands.NcFileCommand","type":"Class"},{"name":"NcFileListCommand","href":"Hi.SessionCommands.NcFileListCommand.html","topicHref":"Hi.SessionCommands.NcFileListCommand.html","topicUid":"Hi.SessionCommands.NcFileListCommand","type":"Class"},{"name":"NcOptOptionCommand","href":"Hi.SessionCommands.NcOptOptionCommand.html","topicHref":"Hi.SessionCommands.NcOptOptionCommand.html","topicUid":"Hi.SessionCommands.NcOptOptionCommand","type":"Class"},{"name":"OptimizeToFilesCommand","href":"Hi.SessionCommands.OptimizeToFilesCommand.html","topicHref":"Hi.SessionCommands.OptimizeToFilesCommand.html","topicUid":"Hi.SessionCommands.OptimizeToFilesCommand","type":"Class"},{"name":"PostExecutionCommand","href":"Hi.SessionCommands.PostExecutionCommand.html","topicHref":"Hi.SessionCommands.PostExecutionCommand.html","topicUid":"Hi.SessionCommands.PostExecutionCommand","type":"Class"},{"name":"PreSettingCommand","href":"Hi.SessionCommands.PreSettingCommand.html","topicHref":"Hi.SessionCommands.PreSettingCommand.html","topicUid":"Hi.SessionCommands.PreSettingCommand","type":"Class"},{"name":"RecordRuntimeGeomActionEnum","href":"Hi.SessionCommands.RecordRuntimeGeomActionEnum.html","topicHref":"Hi.SessionCommands.RecordRuntimeGeomActionEnum.html","topicUid":"Hi.SessionCommands.RecordRuntimeGeomActionEnum","type":"Enum"},{"name":"RecordRuntimeGeomCommand","href":"Hi.SessionCommands.RecordRuntimeGeomCommand.html","topicHref":"Hi.SessionCommands.RecordRuntimeGeomCommand.html","topicUid":"Hi.SessionCommands.RecordRuntimeGeomCommand","type":"Class"},{"name":"ScriptCommand","href":"Hi.SessionCommands.ScriptCommand.html","topicHref":"Hi.SessionCommands.ScriptCommand.html","topicUid":"Hi.SessionCommands.ScriptCommand","type":"Class"},{"name":"SimpleSessionCommand","href":"Hi.SessionCommands.SimpleSessionCommand.html","topicHref":"Hi.SessionCommands.SimpleSessionCommand.html","topicUid":"Hi.SessionCommands.SimpleSessionCommand","type":"Class"},{"name":"WriteRuntimeGeomToStlCommand","href":"Hi.SessionCommands.WriteRuntimeGeomToStlCommand.html","topicHref":"Hi.SessionCommands.WriteRuntimeGeomToStlCommand.html","topicUid":"Hi.SessionCommands.WriteRuntimeGeomToStlCommand","type":"Class"},{"name":"WriteShotFilesCommand","href":"Hi.SessionCommands.WriteShotFilesCommand.html","topicHref":"Hi.SessionCommands.WriteShotFilesCommand.html","topicUid":"Hi.SessionCommands.WriteShotFilesCommand","type":"Class"},{"name":"WriteStepFilesCommand","href":"Hi.SessionCommands.WriteStepFilesCommand.html","topicHref":"Hi.SessionCommands.WriteStepFilesCommand.html","topicUid":"Hi.SessionCommands.WriteStepFilesCommand","type":"Class"}]},{"name":"Hi.SessionShellUtils","href":"Hi.SessionShellUtils.html","topicHref":"Hi.SessionShellUtils.html","topicUid":"Hi.SessionShellUtils","type":"Namespace","items":[{"name":"ISessionShell","href":"Hi.SessionShellUtils.ISessionShell.html","topicHref":"Hi.SessionShellUtils.ISessionShell.html","topicUid":"Hi.SessionShellUtils.ISessionShell","type":"Interface"},{"name":"JsAceAttribute","href":"Hi.SessionShellUtils.JsAceAttribute.html","topicHref":"Hi.SessionShellUtils.JsAceAttribute.html","topicUid":"Hi.SessionShellUtils.JsAceAttribute","type":"Class"}]},{"name":"Hi.SqliteUtils","href":"Hi.SqliteUtils.html","topicHref":"Hi.SqliteUtils.html","topicUid":"Hi.SqliteUtils","type":"Namespace","items":[{"name":"SqliteIdentityRole","href":"Hi.SqliteUtils.SqliteIdentityRole.html","topicHref":"Hi.SqliteUtils.SqliteIdentityRole.html","topicUid":"Hi.SqliteUtils.SqliteIdentityRole","type":"Class"},{"name":"SqliteIdentityStorage","href":"Hi.SqliteUtils.SqliteIdentityStorage.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage","type":"Class"},{"name":"SqliteIdentityStorage.RoleRow","href":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow","type":"Class"},{"name":"SqliteIdentityStorage.UserRow","href":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow","type":"Class"},{"name":"SqliteIdentityUser","href":"Hi.SqliteUtils.SqliteIdentityUser.html","topicHref":"Hi.SqliteUtils.SqliteIdentityUser.html","topicUid":"Hi.SqliteUtils.SqliteIdentityUser","type":"Class"},{"name":"SqliteRoleStore","href":"Hi.SqliteUtils.SqliteRoleStore-1.html","topicHref":"Hi.SqliteUtils.SqliteRoleStore-1.html","topicUid":"Hi.SqliteUtils.SqliteRoleStore`1","type":"Class"},{"name":"SqliteStepStorage","href":"Hi.SqliteUtils.SqliteStepStorage.html","topicHref":"Hi.SqliteUtils.SqliteStepStorage.html","topicUid":"Hi.SqliteUtils.SqliteStepStorage","type":"Class"},{"name":"SqliteStepStorage.MillingStepLuggageRow","href":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html","topicHref":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html","topicUid":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow","type":"Class"},{"name":"SqliteUserStore","href":"Hi.SqliteUtils.SqliteUserStore-1.html","topicHref":"Hi.SqliteUtils.SqliteUserStore-1.html","topicUid":"Hi.SqliteUtils.SqliteUserStore`1","type":"Class"}]},{"name":"Hi.Test","href":"Hi.Test.html","topicHref":"Hi.Test.html","topicUid":"Hi.Test","type":"Namespace","items":[{"name":"TestCollision","href":"Hi.Test.TestCollision.html","topicHref":"Hi.Test.TestCollision.html","topicUid":"Hi.Test.TestCollision","type":"Class"}]},{"name":"Hi.UiExtensions","href":"Hi.UiExtensions.html","topicHref":"Hi.UiExtensions.html","topicUid":"Hi.UiExtensions","type":"Namespace","items":[{"name":"ChartBoundary","href":"Hi.UiExtensions.ChartBoundary.html","topicHref":"Hi.UiExtensions.ChartBoundary.html","topicUid":"Hi.UiExtensions.ChartBoundary","type":"Class"},{"name":"ChartBoundaryEnum","href":"Hi.UiExtensions.ChartBoundaryEnum.html","topicHref":"Hi.UiExtensions.ChartBoundaryEnum.html","topicUid":"Hi.UiExtensions.ChartBoundaryEnum","type":"Enum"},{"name":"NativeVisibility","href":"Hi.UiExtensions.NativeVisibility.html","topicHref":"Hi.UiExtensions.NativeVisibility.html","topicUid":"Hi.UiExtensions.NativeVisibility","type":"Enum"},{"name":"UiUtil","href":"Hi.UiExtensions.UiUtil.html","topicHref":"Hi.UiExtensions.UiUtil.html","topicUid":"Hi.UiExtensions.UiUtil","type":"Class"},{"name":"UiUtil.InvokeFunc","href":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicHref":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicUid":"Hi.UiExtensions.UiUtil.InvokeFunc","type":"Delegate"}]},{"name":"Hi.UniversalNc","href":"Hi.UniversalNc.html","topicHref":"Hi.UniversalNc.html","topicUid":"Hi.UniversalNc","type":"Namespace","items":[{"name":"Lang","href":"Hi.UniversalNc.Lang.html","topicHref":"Hi.UniversalNc.Lang.html","topicUid":"Hi.UniversalNc.Lang","type":"Class"}]},{"name":"Hi.Vibrations","href":"Hi.Vibrations.html","topicHref":"Hi.Vibrations.html","topicUid":"Hi.Vibrations","type":"Namespace","items":[{"name":"AngularVelocityUtil","href":"Hi.Vibrations.AngularVelocityUtil.html","topicHref":"Hi.Vibrations.AngularVelocityUtil.html","topicUid":"Hi.Vibrations.AngularVelocityUtil","type":"Class"},{"name":"ForceAccelAmpPhase","href":"Hi.Vibrations.ForceAccelAmpPhase.html","topicHref":"Hi.Vibrations.ForceAccelAmpPhase.html","topicUid":"Hi.Vibrations.ForceAccelAmpPhase","type":"Class"},{"name":"ForceAccelFourierSeries","href":"Hi.Vibrations.ForceAccelFourierSeries.html","topicHref":"Hi.Vibrations.ForceAccelFourierSeries.html","topicUid":"Hi.Vibrations.ForceAccelFourierSeries","type":"Class"},{"name":"ForceAccelShot","href":"Hi.Vibrations.ForceAccelShot.html","topicHref":"Hi.Vibrations.ForceAccelShot.html","topicUid":"Hi.Vibrations.ForceAccelShot","type":"Class"},{"name":"ForceAccelUtil","href":"Hi.Vibrations.ForceAccelUtil.html","topicHref":"Hi.Vibrations.ForceAccelUtil.html","topicUid":"Hi.Vibrations.ForceAccelUtil","type":"Class"},{"name":"IAngularVelocityOwner","href":"Hi.Vibrations.IAngularVelocityOwner.html","topicHref":"Hi.Vibrations.IAngularVelocityOwner.html","topicUid":"Hi.Vibrations.IAngularVelocityOwner","type":"Interface"},{"name":"VibrationUtil","href":"Hi.Vibrations.VibrationUtil.html","topicHref":"Hi.Vibrations.VibrationUtil.html","topicUid":"Hi.Vibrations.VibrationUtil","type":"Class"},{"name":"WAmpPhase","href":"Hi.Vibrations.WAmpPhase.html","topicHref":"Hi.Vibrations.WAmpPhase.html","topicUid":"Hi.Vibrations.WAmpPhase","type":"Class"},{"name":"WAmpPhaseXyzTransformation","href":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicHref":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicUid":"Hi.Vibrations.WAmpPhaseXyzTransformation","type":"Class"}]},{"name":"Hi.WinForm.Disp","href":"Hi.WinForm.Disp.html","topicHref":"Hi.WinForm.Disp.html","topicUid":"Hi.WinForm.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WinForm.Disp.RenderingCanvas.html","topicHref":"Hi.WinForm.Disp.RenderingCanvas.html","topicUid":"Hi.WinForm.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingForm","href":"Hi.WinForm.Disp.RenderingForm.html","topicHref":"Hi.WinForm.Disp.RenderingForm.html","topicUid":"Hi.WinForm.Disp.RenderingForm","type":"Class"}]},{"name":"Hi.WpfPlus.Disp","href":"Hi.WpfPlus.Disp.html","topicHref":"Hi.WpfPlus.Disp.html","topicUid":"Hi.WpfPlus.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicHref":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicUid":"Hi.WpfPlus.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingWindow","href":"Hi.WpfPlus.Disp.RenderingWindow.html","topicHref":"Hi.WpfPlus.Disp.RenderingWindow.html","topicUid":"Hi.WpfPlus.Disp.RenderingWindow","type":"Class"},{"name":"WpfDispUtil","href":"Hi.WpfPlus.Disp.WpfDispUtil.html","topicHref":"Hi.WpfPlus.Disp.WpfDispUtil.html","topicUid":"Hi.WpfPlus.Disp.WpfDispUtil","type":"Class"}]},{"name":"HiMachining.Milling","href":"HiMachining.Milling.html","topicHref":"HiMachining.Milling.html","topicUid":"HiMachining.Milling","type":"Namespace","items":[{"name":"ClMillingDevice","href":"HiMachining.Milling.ClMillingDevice.html","topicHref":"HiMachining.Milling.ClMillingDevice.html","topicUid":"HiMachining.Milling.ClMillingDevice","type":"Class"}]},{"name":"HiNc.Grpcs","href":"HiNc.Grpcs.html","topicHref":"HiNc.Grpcs.html","topicUid":"HiNc.Grpcs","type":"Namespace","items":[{"name":"MachiningProjectGrpcServer","href":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicHref":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicUid":"HiNc.Grpcs.MachiningProjectGrpcServer","type":"Class"}]},{"name":"numerical","href":"numerical.html","topicHref":"numerical.html","topicUid":"numerical","type":"Namespace","items":[{"name":"Empty","href":"numerical.Empty.html","topicHref":"numerical.Empty.html","topicUid":"numerical.Empty","type":"Class"},{"name":"GrpcCsvRowDictionary","href":"numerical.GrpcCsvRowDictionary.html","topicHref":"numerical.GrpcCsvRowDictionary.html","topicUid":"numerical.GrpcCsvRowDictionary","type":"Class"},{"name":"GrpcNcStep","href":"numerical.GrpcNcStep.html","topicHref":"numerical.GrpcNcStep.html","topicUid":"numerical.GrpcNcStep","type":"Class"},{"name":"NumericalReflection","href":"numerical.NumericalReflection.html","topicHref":"numerical.NumericalReflection.html","topicUid":"numerical.NumericalReflection","type":"Class"},{"name":"NumericalService","href":"numerical.NumericalService.html","topicHref":"numerical.NumericalService.html","topicUid":"numerical.NumericalService","type":"Class"},{"name":"NumericalService.NumericalServiceBase","href":"numerical.NumericalService.NumericalServiceBase.html","topicHref":"numerical.NumericalService.NumericalServiceBase.html","topicUid":"numerical.NumericalService.NumericalServiceBase","type":"Class"},{"name":"NumericalService.NumericalServiceClient","href":"numerical.NumericalService.NumericalServiceClient.html","topicHref":"numerical.NumericalService.NumericalServiceClient.html","topicUid":"numerical.NumericalService.NumericalServiceClient","type":"Class"},{"name":"UniversalNcReflection","href":"numerical.UniversalNcReflection.html","topicHref":"numerical.UniversalNcReflection.html","topicUid":"numerical.UniversalNcReflection","type":"Class"},{"name":"UniversalNcService","href":"numerical.UniversalNcService.html","topicHref":"numerical.UniversalNcService.html","topicUid":"numerical.UniversalNcService","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceBase","href":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceBase","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceClient","href":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceClient","type":"Class"}]}],"memberLayout":"SamePage"} +{"items":[{"name":"Hi.Cbtr","href":"Hi.Cbtr.html","topicHref":"Hi.Cbtr.html","topicUid":"Hi.Cbtr","type":"Namespace","items":[{"name":"CachedTris","href":"Hi.Cbtr.CachedTris.html","topicHref":"Hi.Cbtr.CachedTris.html","topicUid":"Hi.Cbtr.CachedTris","type":"Class"},{"name":"CachedTris.SweepingMode","href":"Hi.Cbtr.CachedTris.SweepingMode.html","topicHref":"Hi.Cbtr.CachedTris.SweepingMode.html","topicUid":"Hi.Cbtr.CachedTris.SweepingMode","type":"Enum"},{"name":"CbtrPickable","href":"Hi.Cbtr.CbtrPickable.html","topicHref":"Hi.Cbtr.CbtrPickable.html","topicUid":"Hi.Cbtr.CbtrPickable","type":"Class"},{"name":"ConstructionDefectDisplayee","href":"Hi.Cbtr.ConstructionDefectDisplayee.html","topicHref":"Hi.Cbtr.ConstructionDefectDisplayee.html","topicUid":"Hi.Cbtr.ConstructionDefectDisplayee","type":"Class"},{"name":"CubeTree","href":"Hi.Cbtr.CubeTree.html","topicHref":"Hi.Cbtr.CubeTree.html","topicUid":"Hi.Cbtr.CubeTree","type":"Class"},{"name":"CubeTree.DefectNodeInfo","href":"Hi.Cbtr.CubeTree.DefectNodeInfo.html","topicHref":"Hi.Cbtr.CubeTree.DefectNodeInfo.html","topicUid":"Hi.Cbtr.CubeTree.DefectNodeInfo","type":"Class"},{"name":"CubeTree.DefectNodeInfo.TriWireInfo","href":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html","topicHref":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html","topicUid":"Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo","type":"Class"},{"name":"CubeTree.DefectTriWireInfoInterop","href":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html","topicHref":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop.html","topicUid":"Hi.Cbtr.CubeTree.DefectTriWireInfoInterop","type":"Struct"},{"name":"CubeTree.InfNodeInfo","href":"Hi.Cbtr.CubeTree.InfNodeInfo.html","topicHref":"Hi.Cbtr.CubeTree.InfNodeInfo.html","topicUid":"Hi.Cbtr.CubeTree.InfNodeInfo","type":"Class"},{"name":"CubeTree.TriWireRelationInterop","href":"Hi.Cbtr.CubeTree.TriWireRelationInterop.html","topicHref":"Hi.Cbtr.CubeTree.TriWireRelationInterop.html","topicUid":"Hi.Cbtr.CubeTree.TriWireRelationInterop","type":"Struct"},{"name":"CubeTree.diff_response_func_t","href":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicHref":"Hi.Cbtr.CubeTree.diff_response_func_t.html","topicUid":"Hi.Cbtr.CubeTree.diff_response_func_t","type":"Delegate"},{"name":"CubeTreeExportExtensions","href":"Hi.Cbtr.CubeTreeExportExtensions.html","topicHref":"Hi.Cbtr.CubeTreeExportExtensions.html","topicUid":"Hi.Cbtr.CubeTreeExportExtensions","type":"Class"},{"name":"CubeTreeFile","href":"Hi.Cbtr.CubeTreeFile.html","topicHref":"Hi.Cbtr.CubeTreeFile.html","topicUid":"Hi.Cbtr.CubeTreeFile","type":"Class"},{"name":"DiffAttachment","href":"Hi.Cbtr.DiffAttachment.html","topicHref":"Hi.Cbtr.DiffAttachment.html","topicUid":"Hi.Cbtr.DiffAttachment","type":"Class"},{"name":"GeomBoolCache","href":"Hi.Cbtr.GeomBoolCache.html","topicHref":"Hi.Cbtr.GeomBoolCache.html","topicUid":"Hi.Cbtr.GeomBoolCache","type":"Class"},{"name":"GeomBoolCacheEnum","href":"Hi.Cbtr.GeomBoolCacheEnum.html","topicHref":"Hi.Cbtr.GeomBoolCacheEnum.html","topicUid":"Hi.Cbtr.GeomBoolCacheEnum","type":"Enum"},{"name":"IGetInitStickConvex","href":"Hi.Cbtr.IGetInitStickConvex.html","topicHref":"Hi.Cbtr.IGetInitStickConvex.html","topicUid":"Hi.Cbtr.IGetInitStickConvex","type":"Interface"},{"name":"InfDefectDisplayee","href":"Hi.Cbtr.InfDefectDisplayee.html","topicHref":"Hi.Cbtr.InfDefectDisplayee.html","topicUid":"Hi.Cbtr.InfDefectDisplayee","type":"Class"},{"name":"InitStickConvex","href":"Hi.Cbtr.InitStickConvex.html","topicHref":"Hi.Cbtr.InitStickConvex.html","topicUid":"Hi.Cbtr.InitStickConvex","type":"Class"},{"name":"LsStl","href":"Hi.Cbtr.LsStl.html","topicHref":"Hi.Cbtr.LsStl.html","topicUid":"Hi.Cbtr.LsStl","type":"Class"},{"name":"Substraction","href":"Hi.Cbtr.Substraction.html","topicHref":"Hi.Cbtr.Substraction.html","topicUid":"Hi.Cbtr.Substraction","type":"Class"},{"name":"UnhighlightablePickable","href":"Hi.Cbtr.UnhighlightablePickable.html","topicHref":"Hi.Cbtr.UnhighlightablePickable.html","topicUid":"Hi.Cbtr.UnhighlightablePickable","type":"Class"},{"name":"UnmanagedSubstraction","href":"Hi.Cbtr.UnmanagedSubstraction.html","topicHref":"Hi.Cbtr.UnmanagedSubstraction.html","topicUid":"Hi.Cbtr.UnmanagedSubstraction","type":"Class"},{"name":"WireCube","href":"Hi.Cbtr.WireCube.html","topicHref":"Hi.Cbtr.WireCube.html","topicUid":"Hi.Cbtr.WireCube","type":"Class"},{"name":"node_diff_t","href":"Hi.Cbtr.node_diff_t.html","topicHref":"Hi.Cbtr.node_diff_t.html","topicUid":"Hi.Cbtr.node_diff_t","type":"Struct"}]},{"name":"Hi.Collision","href":"Hi.Collision.html","topicHref":"Hi.Collision.html","topicUid":"Hi.Collision","type":"Namespace","items":[{"name":"AnchoredCollidableLeaf","href":"Hi.Collision.AnchoredCollidableLeaf.html","topicHref":"Hi.Collision.AnchoredCollidableLeaf.html","topicUid":"Hi.Collision.AnchoredCollidableLeaf","type":"Class"},{"name":"AnchoredCollidablePair","href":"Hi.Collision.AnchoredCollidablePair.html","topicHref":"Hi.Collision.AnchoredCollidablePair.html","topicUid":"Hi.Collision.AnchoredCollidablePair","type":"Class"},{"name":"CollidableStl","href":"Hi.Collision.CollidableStl.html","topicHref":"Hi.Collision.CollidableStl.html","topicUid":"Hi.Collision.CollidableStl","type":"Class"},{"name":"CollisionFlag","href":"Hi.Collision.CollisionFlag.html","topicHref":"Hi.Collision.CollisionFlag.html","topicUid":"Hi.Collision.CollisionFlag","type":"Enum"},{"name":"CollisionIndexPair","href":"Hi.Collision.CollisionIndexPair.html","topicHref":"Hi.Collision.CollisionIndexPair.html","topicUid":"Hi.Collision.CollisionIndexPair","type":"Class"},{"name":"CollisionUtil","href":"Hi.Collision.CollisionUtil.html","topicHref":"Hi.Collision.CollisionUtil.html","topicUid":"Hi.Collision.CollisionUtil","type":"Class"},{"name":"FuncAnchoredCollidable","href":"Hi.Collision.FuncAnchoredCollidable.html","topicHref":"Hi.Collision.FuncAnchoredCollidable.html","topicUid":"Hi.Collision.FuncAnchoredCollidable","type":"Class"},{"name":"IAnchoredCollidableBased","href":"Hi.Collision.IAnchoredCollidableBased.html","topicHref":"Hi.Collision.IAnchoredCollidableBased.html","topicUid":"Hi.Collision.IAnchoredCollidableBased","type":"Interface"},{"name":"IAnchoredCollidableLeaf","href":"Hi.Collision.IAnchoredCollidableLeaf.html","topicHref":"Hi.Collision.IAnchoredCollidableLeaf.html","topicUid":"Hi.Collision.IAnchoredCollidableLeaf","type":"Interface"},{"name":"IAnchoredCollidableNode","href":"Hi.Collision.IAnchoredCollidableNode.html","topicHref":"Hi.Collision.IAnchoredCollidableNode.html","topicUid":"Hi.Collision.IAnchoredCollidableNode","type":"Interface"},{"name":"IAnchoredCollidableStem","href":"Hi.Collision.IAnchoredCollidableStem.html","topicHref":"Hi.Collision.IAnchoredCollidableStem.html","topicUid":"Hi.Collision.IAnchoredCollidableStem","type":"Interface"},{"name":"ICollidable","href":"Hi.Collision.ICollidable.html","topicHref":"Hi.Collision.ICollidable.html","topicUid":"Hi.Collision.ICollidable","type":"Interface"},{"name":"ICollidee","href":"Hi.Collision.ICollidee.html","topicHref":"Hi.Collision.ICollidee.html","topicUid":"Hi.Collision.ICollidee","type":"Interface"},{"name":"ICollisionArena","href":"Hi.Collision.ICollisionArena.html","topicHref":"Hi.Collision.ICollisionArena.html","topicUid":"Hi.Collision.ICollisionArena","type":"Interface"},{"name":"ICollisionIndex","href":"Hi.Collision.ICollisionIndex.html","topicHref":"Hi.Collision.ICollisionIndex.html","topicUid":"Hi.Collision.ICollisionIndex","type":"Interface"},{"name":"IGetAnchoredCollidablePairs","href":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicHref":"Hi.Collision.IGetAnchoredCollidablePairs.html","topicUid":"Hi.Collision.IGetAnchoredCollidablePairs","type":"Interface"},{"name":"IGetCollidable","href":"Hi.Collision.IGetCollidable.html","topicHref":"Hi.Collision.IGetCollidable.html","topicUid":"Hi.Collision.IGetCollidable","type":"Interface"},{"name":"IGetCollisionIndexPairs","href":"Hi.Collision.IGetCollisionIndexPairs.html","topicHref":"Hi.Collision.IGetCollisionIndexPairs.html","topicUid":"Hi.Collision.IGetCollisionIndexPairs","type":"Interface"},{"name":"IGetDefaultCollidablePairs","href":"Hi.Collision.IGetDefaultCollidablePairs.html","topicHref":"Hi.Collision.IGetDefaultCollidablePairs.html","topicUid":"Hi.Collision.IGetDefaultCollidablePairs","type":"Interface"},{"name":"IGetTriTree","href":"Hi.Collision.IGetTriTree.html","topicHref":"Hi.Collision.IGetTriTree.html","topicUid":"Hi.Collision.IGetTriTree","type":"Interface"},{"name":"MechCollisionResult","href":"Hi.Collision.MechCollisionResult.html","topicHref":"Hi.Collision.MechCollisionResult.html","topicUid":"Hi.Collision.MechCollisionResult","type":"Class"},{"name":"MechCollisionUtil","href":"Hi.Collision.MechCollisionUtil.html","topicHref":"Hi.Collision.MechCollisionUtil.html","topicUid":"Hi.Collision.MechCollisionUtil","type":"Class"},{"name":"TriTree","href":"Hi.Collision.TriTree.html","topicHref":"Hi.Collision.TriTree.html","topicUid":"Hi.Collision.TriTree","type":"Class"}]},{"name":"Hi.Collisions","href":"Hi.Collisions.html","topicHref":"Hi.Collisions.html","topicUid":"Hi.Collisions","type":"Namespace","items":[{"name":"AnchoredCollidabled","href":"Hi.Collisions.AnchoredCollidabled.html","topicHref":"Hi.Collisions.AnchoredCollidabled.html","topicUid":"Hi.Collisions.AnchoredCollidabled","type":"Class"},{"name":"IAnchoredCollidabled","href":"Hi.Collisions.IAnchoredCollidabled.html","topicHref":"Hi.Collisions.IAnchoredCollidabled.html","topicUid":"Hi.Collisions.IAnchoredCollidabled","type":"Interface"}]},{"name":"Hi.Coloring","href":"Hi.Coloring.html","topicHref":"Hi.Coloring.html","topicUid":"Hi.Coloring","type":"Namespace","items":[{"name":"ColorUtil","href":"Hi.Coloring.ColorUtil.html","topicHref":"Hi.Coloring.ColorUtil.html","topicUid":"Hi.Coloring.ColorUtil","type":"Class"},{"name":"DictionaryColorGuide","href":"Hi.Coloring.DictionaryColorGuide.html","topicHref":"Hi.Coloring.DictionaryColorGuide.html","topicUid":"Hi.Coloring.DictionaryColorGuide","type":"Class"},{"name":"DiscreteQuantityColorGuide","href":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicHref":"Hi.Coloring.DiscreteQuantityColorGuide.html","topicUid":"Hi.Coloring.DiscreteQuantityColorGuide","type":"Class"},{"name":"FilteredColorGuide","href":"Hi.Coloring.FilteredColorGuide.html","topicHref":"Hi.Coloring.FilteredColorGuide.html","topicUid":"Hi.Coloring.FilteredColorGuide","type":"Class"},{"name":"FuncRangeColorGuide","href":"Hi.Coloring.FuncRangeColorGuide.html","topicHref":"Hi.Coloring.FuncRangeColorGuide.html","topicUid":"Hi.Coloring.FuncRangeColorGuide","type":"Class"},{"name":"IColorGuide","href":"Hi.Coloring.IColorGuide.html","topicHref":"Hi.Coloring.IColorGuide.html","topicUid":"Hi.Coloring.IColorGuide","type":"Interface"},{"name":"IColorGuideProperty","href":"Hi.Coloring.IColorGuideProperty.html","topicHref":"Hi.Coloring.IColorGuideProperty.html","topicUid":"Hi.Coloring.IColorGuideProperty","type":"Interface"},{"name":"IGetColorGuide","href":"Hi.Coloring.IGetColorGuide.html","topicHref":"Hi.Coloring.IGetColorGuide.html","topicUid":"Hi.Coloring.IGetColorGuide","type":"Interface"},{"name":"IGetRangeColorRule","href":"Hi.Coloring.IGetRangeColorRule.html","topicHref":"Hi.Coloring.IGetRangeColorRule.html","topicUid":"Hi.Coloring.IGetRangeColorRule","type":"Interface"},{"name":"IGetRgb","href":"Hi.Coloring.IGetRgb.html","topicHref":"Hi.Coloring.IGetRgb.html","topicUid":"Hi.Coloring.IGetRgb","type":"Interface"},{"name":"IGetRgbWithPriority","href":"Hi.Coloring.IGetRgbWithPriority.html","topicHref":"Hi.Coloring.IGetRgbWithPriority.html","topicUid":"Hi.Coloring.IGetRgbWithPriority","type":"Interface"},{"name":"PlainColorGuide","href":"Hi.Coloring.PlainColorGuide.html","topicHref":"Hi.Coloring.PlainColorGuide.html","topicUid":"Hi.Coloring.PlainColorGuide","type":"Class"},{"name":"QuantityColorGuide","href":"Hi.Coloring.QuantityColorGuide.html","topicHref":"Hi.Coloring.QuantityColorGuide.html","topicUid":"Hi.Coloring.QuantityColorGuide","type":"Class"},{"name":"RangeColorRule","href":"Hi.Coloring.RangeColorRule.html","topicHref":"Hi.Coloring.RangeColorRule.html","topicUid":"Hi.Coloring.RangeColorRule","type":"Class"},{"name":"RatioRgbFuncEnum","href":"Hi.Coloring.RatioRgbFuncEnum.html","topicHref":"Hi.Coloring.RatioRgbFuncEnum.html","topicUid":"Hi.Coloring.RatioRgbFuncEnum","type":"Enum"},{"name":"RgbSeed","href":"Hi.Coloring.RgbSeed.html","topicHref":"Hi.Coloring.RgbSeed.html","topicUid":"Hi.Coloring.RgbSeed","type":"Class"}]},{"name":"Hi.Common","href":"Hi.Common.html","topicHref":"Hi.Common.html","topicUid":"Hi.Common","type":"Namespace","items":[{"name":"BinIoUtil","href":"Hi.Common.BinIoUtil.html","topicHref":"Hi.Common.BinIoUtil.html","topicUid":"Hi.Common.BinIoUtil","type":"Class"},{"name":"BitUtil","href":"Hi.Common.BitUtil.html","topicHref":"Hi.Common.BitUtil.html","topicUid":"Hi.Common.BitUtil","type":"Class"},{"name":"BlockingTimer","href":"Hi.Common.BlockingTimer.html","topicHref":"Hi.Common.BlockingTimer.html","topicUid":"Hi.Common.BlockingTimer","type":"Class"},{"name":"BytesUtil","href":"Hi.Common.BytesUtil.html","topicHref":"Hi.Common.BytesUtil.html","topicUid":"Hi.Common.BytesUtil","type":"Class"},{"name":"ConcurrentTimeCounter","href":"Hi.Common.ConcurrentTimeCounter.html","topicHref":"Hi.Common.ConcurrentTimeCounter.html","topicUid":"Hi.Common.ConcurrentTimeCounter","type":"Class"},{"name":"ConsoleUtil","href":"Hi.Common.ConsoleUtil.html","topicHref":"Hi.Common.ConsoleUtil.html","topicUid":"Hi.Common.ConsoleUtil","type":"Class"},{"name":"CppLogUtil","href":"Hi.Common.CppLogUtil.html","topicHref":"Hi.Common.CppLogUtil.html","topicUid":"Hi.Common.CppLogUtil","type":"Class"},{"name":"CppLogUtil.LogDelegate","href":"Hi.Common.CppLogUtil.LogDelegate.html","topicHref":"Hi.Common.CppLogUtil.LogDelegate.html","topicUid":"Hi.Common.CppLogUtil.LogDelegate","type":"Delegate"},{"name":"CultureUtil","href":"Hi.Common.CultureUtil.html","topicHref":"Hi.Common.CultureUtil.html","topicUid":"Hi.Common.CultureUtil","type":"Class"},{"name":"DuplicateUtil","href":"Hi.Common.DuplicateUtil.html","topicHref":"Hi.Common.DuplicateUtil.html","topicUid":"Hi.Common.DuplicateUtil","type":"Class"},{"name":"EnumUtil","href":"Hi.Common.EnumUtil.html","topicHref":"Hi.Common.EnumUtil.html","topicUid":"Hi.Common.EnumUtil","type":"Class"},{"name":"EnumerablePlayer","href":"Hi.Common.EnumerablePlayer.html","topicHref":"Hi.Common.EnumerablePlayer.html","topicUid":"Hi.Common.EnumerablePlayer","type":"Class"},{"name":"IAbstractNote","href":"Hi.Common.IAbstractNote.html","topicHref":"Hi.Common.IAbstractNote.html","topicUid":"Hi.Common.IAbstractNote","type":"Interface"},{"name":"IBinaryIo","href":"Hi.Common.IBinaryIo.html","topicHref":"Hi.Common.IBinaryIo.html","topicUid":"Hi.Common.IBinaryIo","type":"Interface"},{"name":"IClearCache","href":"Hi.Common.IClearCache.html","topicHref":"Hi.Common.IClearCache.html","topicUid":"Hi.Common.IClearCache","type":"Interface"},{"name":"IDuplicate","href":"Hi.Common.IDuplicate.html","topicHref":"Hi.Common.IDuplicate.html","topicUid":"Hi.Common.IDuplicate","type":"Interface"},{"name":"IGetQuantityByKey","href":"Hi.Common.IGetQuantityByKey.html","topicHref":"Hi.Common.IGetQuantityByKey.html","topicUid":"Hi.Common.IGetQuantityByKey","type":"Interface"},{"name":"IGetSelectionName","href":"Hi.Common.IGetSelectionName.html","topicHref":"Hi.Common.IGetSelectionName.html","topicUid":"Hi.Common.IGetSelectionName","type":"Interface"},{"name":"INameNote","href":"Hi.Common.INameNote.html","topicHref":"Hi.Common.INameNote.html","topicUid":"Hi.Common.INameNote","type":"Interface"},{"name":"IPreferredFileName","href":"Hi.Common.IPreferredFileName.html","topicHref":"Hi.Common.IPreferredFileName.html","topicUid":"Hi.Common.IPreferredFileName","type":"Interface"},{"name":"IProgressFraction","href":"Hi.Common.IProgressFraction.html","topicHref":"Hi.Common.IProgressFraction.html","topicUid":"Hi.Common.IProgressFraction","type":"Interface"},{"name":"ISourceFile","href":"Hi.Common.ISourceFile.html","topicHref":"Hi.Common.ISourceFile.html","topicUid":"Hi.Common.ISourceFile","type":"Interface"},{"name":"IToPresentDto","href":"Hi.Common.IToPresentDto.html","topicHref":"Hi.Common.IToPresentDto.html","topicUid":"Hi.Common.IToPresentDto","type":"Interface"},{"name":"IUpdateByContent","href":"Hi.Common.IUpdateByContent.html","topicHref":"Hi.Common.IUpdateByContent.html","topicUid":"Hi.Common.IUpdateByContent","type":"Interface"},{"name":"IUriGetter","href":"Hi.Common.IUriGetter.html","topicHref":"Hi.Common.IUriGetter.html","topicUid":"Hi.Common.IUriGetter","type":"Interface"},{"name":"IWriteBin","href":"Hi.Common.IWriteBin.html","topicHref":"Hi.Common.IWriteBin.html","topicUid":"Hi.Common.IWriteBin","type":"Interface"},{"name":"IndexSegment","href":"Hi.Common.IndexSegment.html","topicHref":"Hi.Common.IndexSegment.html","topicUid":"Hi.Common.IndexSegment","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter","type":"Class"},{"name":"IntegerKeyDictionaryConverter","href":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicHref":"Hi.Common.IntegerKeyDictionaryConverter-1.html","topicUid":"Hi.Common.IntegerKeyDictionaryConverter`1","type":"Class"},{"name":"InternalException","href":"Hi.Common.InternalException.html","topicHref":"Hi.Common.InternalException.html","topicUid":"Hi.Common.InternalException","type":"Class"},{"name":"InvokeUtil","href":"Hi.Common.InvokeUtil.html","topicHref":"Hi.Common.InvokeUtil.html","topicUid":"Hi.Common.InvokeUtil","type":"Class"},{"name":"JsonUtil","href":"Hi.Common.JsonUtil.html","topicHref":"Hi.Common.JsonUtil.html","topicUid":"Hi.Common.JsonUtil","type":"Class"},{"name":"LooseRunner","href":"Hi.Common.LooseRunner.html","topicHref":"Hi.Common.LooseRunner.html","topicUid":"Hi.Common.LooseRunner","type":"Class"},{"name":"LooseRunner.MergedCancellationTokenRun","href":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicHref":"Hi.Common.LooseRunner.MergedCancellationTokenRun.html","topicUid":"Hi.Common.LooseRunner.MergedCancellationTokenRun","type":"Delegate"},{"name":"ManualUtil","href":"Hi.Common.ManualUtil.html","topicHref":"Hi.Common.ManualUtil.html","topicUid":"Hi.Common.ManualUtil","type":"Class"},{"name":"MaskUtil","href":"Hi.Common.MaskUtil.html","topicHref":"Hi.Common.MaskUtil.html","topicUid":"Hi.Common.MaskUtil","type":"Class"},{"name":"NameUtil","href":"Hi.Common.NameUtil.html","topicHref":"Hi.Common.NameUtil.html","topicUid":"Hi.Common.NameUtil","type":"Class"},{"name":"PacePlayee","href":"Hi.Common.PacePlayee.html","topicHref":"Hi.Common.PacePlayee.html","topicUid":"Hi.Common.PacePlayee","type":"Class"},{"name":"PacePlayer","href":"Hi.Common.PacePlayer.html","topicHref":"Hi.Common.PacePlayer.html","topicUid":"Hi.Common.PacePlayer","type":"Class"},{"name":"Pair","href":"Hi.Common.Pair-2.html","topicHref":"Hi.Common.Pair-2.html","topicUid":"Hi.Common.Pair`2","type":"Class"},{"name":"ProgressFraction","href":"Hi.Common.ProgressFraction.html","topicHref":"Hi.Common.ProgressFraction.html","topicUid":"Hi.Common.ProgressFraction","type":"Class"},{"name":"Range","href":"Hi.Common.Range-1.html","topicHref":"Hi.Common.Range-1.html","topicUid":"Hi.Common.Range`1","type":"Class"},{"name":"ResourceUtil","href":"Hi.Common.ResourceUtil.html","topicHref":"Hi.Common.ResourceUtil.html","topicUid":"Hi.Common.ResourceUtil","type":"Class"},{"name":"RoutineBlocker","href":"Hi.Common.RoutineBlocker.html","topicHref":"Hi.Common.RoutineBlocker.html","topicUid":"Hi.Common.RoutineBlocker","type":"Class"},{"name":"SearchResult","href":"Hi.Common.SearchResult.html","topicHref":"Hi.Common.SearchResult.html","topicUid":"Hi.Common.SearchResult","type":"Enum"},{"name":"SeqPairUtil","href":"Hi.Common.SeqPairUtil.html","topicHref":"Hi.Common.SeqPairUtil.html","topicUid":"Hi.Common.SeqPairUtil","type":"Class"},{"name":"SeqPair","href":"Hi.Common.SeqPair-1.html","topicHref":"Hi.Common.SeqPair-1.html","topicUid":"Hi.Common.SeqPair`1","type":"Class"},{"name":"ServerFileExplorerConfig","href":"Hi.Common.ServerFileExplorerConfig.html","topicHref":"Hi.Common.ServerFileExplorerConfig.html","topicUid":"Hi.Common.ServerFileExplorerConfig","type":"Class"},{"name":"StringLocalizer","href":"Hi.Common.StringLocalizer.html","topicHref":"Hi.Common.StringLocalizer.html","topicUid":"Hi.Common.StringLocalizer","type":"Class"},{"name":"StringUtil","href":"Hi.Common.StringUtil.html","topicHref":"Hi.Common.StringUtil.html","topicUid":"Hi.Common.StringUtil","type":"Class"},{"name":"TaskUtil","href":"Hi.Common.TaskUtil.html","topicHref":"Hi.Common.TaskUtil.html","topicUid":"Hi.Common.TaskUtil","type":"Class"},{"name":"TimeCounter","href":"Hi.Common.TimeCounter.html","topicHref":"Hi.Common.TimeCounter.html","topicUid":"Hi.Common.TimeCounter","type":"Class"}]},{"name":"Hi.Common.Collections","href":"Hi.Common.Collections.html","topicHref":"Hi.Common.Collections.html","topicUid":"Hi.Common.Collections","type":"Namespace","items":[{"name":"DictionaryUtil","href":"Hi.Common.Collections.DictionaryUtil.html","topicHref":"Hi.Common.Collections.DictionaryUtil.html","topicUid":"Hi.Common.Collections.DictionaryUtil","type":"Class"},{"name":"EnumerableUtil","href":"Hi.Common.Collections.EnumerableUtil.html","topicHref":"Hi.Common.Collections.EnumerableUtil.html","topicUid":"Hi.Common.Collections.EnumerableUtil","type":"Class"},{"name":"FixedSizeConcurrentLinkedListUtil","href":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicHref":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil.html","topicUid":"Hi.Common.Collections.FixedSizeConcurrentLinkedListUtil","type":"Class"},{"name":"LazyLinkedListNode","href":"Hi.Common.Collections.LazyLinkedListNode-1.html","topicHref":"Hi.Common.Collections.LazyLinkedListNode-1.html","topicUid":"Hi.Common.Collections.LazyLinkedListNode`1","type":"Class"},{"name":"LazyLinkedList","href":"Hi.Common.Collections.LazyLinkedList-1.html","topicHref":"Hi.Common.Collections.LazyLinkedList-1.html","topicUid":"Hi.Common.Collections.LazyLinkedList`1","type":"Class"},{"name":"LinkedListUtil","href":"Hi.Common.Collections.LinkedListUtil.html","topicHref":"Hi.Common.Collections.LinkedListUtil.html","topicUid":"Hi.Common.Collections.LinkedListUtil","type":"Class"},{"name":"ListIndexBasedEnumerable","href":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedEnumerable-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedEnumerable`1","type":"Class"},{"name":"ListIndexBasedIEnumerator","href":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicHref":"Hi.Common.Collections.ListIndexBasedIEnumerator-1.html","topicUid":"Hi.Common.Collections.ListIndexBasedIEnumerator`1","type":"Class"},{"name":"ListUtil","href":"Hi.Common.Collections.ListUtil.html","topicHref":"Hi.Common.Collections.ListUtil.html","topicUid":"Hi.Common.Collections.ListUtil","type":"Class"},{"name":"ListUtil.OuterPolationMode","href":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicHref":"Hi.Common.Collections.ListUtil.OuterPolationMode.html","topicUid":"Hi.Common.Collections.ListUtil.OuterPolationMode","type":"Enum"},{"name":"SearchTargetMode","href":"Hi.Common.Collections.SearchTargetMode.html","topicHref":"Hi.Common.Collections.SearchTargetMode.html","topicUid":"Hi.Common.Collections.SearchTargetMode","type":"Enum"},{"name":"SeekDirection","href":"Hi.Common.Collections.SeekDirection.html","topicHref":"Hi.Common.Collections.SeekDirection.html","topicUid":"Hi.Common.Collections.SeekDirection","type":"Enum"},{"name":"SortedListUtil","href":"Hi.Common.Collections.SortedListUtil.html","topicHref":"Hi.Common.Collections.SortedListUtil.html","topicUid":"Hi.Common.Collections.SortedListUtil","type":"Class"},{"name":"SubList","href":"Hi.Common.Collections.SubList-1.html","topicHref":"Hi.Common.Collections.SubList-1.html","topicUid":"Hi.Common.Collections.SubList`1","type":"Class"},{"name":"SynList","href":"Hi.Common.Collections.SynList-1.html","topicHref":"Hi.Common.Collections.SynList-1.html","topicUid":"Hi.Common.Collections.SynList`1","type":"Class"}]},{"name":"Hi.Common.CsvUtils","href":"Hi.Common.CsvUtils.html","topicHref":"Hi.Common.CsvUtils.html","topicUid":"Hi.Common.CsvUtils","type":"Namespace","items":[{"name":"CsvInputKit","href":"Hi.Common.CsvUtils.CsvInputKit.html","topicHref":"Hi.Common.CsvUtils.CsvInputKit.html","topicUid":"Hi.Common.CsvUtils.CsvInputKit","type":"Class"},{"name":"CsvOutputKit","href":"Hi.Common.CsvUtils.CsvOutputKit.html","topicHref":"Hi.Common.CsvUtils.CsvOutputKit.html","topicUid":"Hi.Common.CsvUtils.CsvOutputKit","type":"Class"},{"name":"CsvUtil","href":"Hi.Common.CsvUtils.CsvUtil.html","topicHref":"Hi.Common.CsvUtils.CsvUtil.html","topicUid":"Hi.Common.CsvUtils.CsvUtil","type":"Class"},{"name":"ICsvRowIo","href":"Hi.Common.CsvUtils.ICsvRowIo.html","topicHref":"Hi.Common.CsvUtils.ICsvRowIo.html","topicUid":"Hi.Common.CsvUtils.ICsvRowIo","type":"Interface"},{"name":"IGetCsvDictionary","href":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicHref":"Hi.Common.CsvUtils.IGetCsvDictionary.html","topicUid":"Hi.Common.CsvUtils.IGetCsvDictionary","type":"Interface"}]},{"name":"Hi.Common.FileLines","href":"Hi.Common.FileLines.html","topicHref":"Hi.Common.FileLines.html","topicUid":"Hi.Common.FileLines","type":"Namespace","items":[{"name":"FileBeginEventArgs","href":"Hi.Common.FileLines.FileBeginEventArgs.html","topicHref":"Hi.Common.FileLines.FileBeginEventArgs.html","topicUid":"Hi.Common.FileLines.FileBeginEventArgs","type":"Class"},{"name":"FileEndEventArgs","href":"Hi.Common.FileLines.FileEndEventArgs.html","topicHref":"Hi.Common.FileLines.FileEndEventArgs.html","topicUid":"Hi.Common.FileLines.FileEndEventArgs","type":"Class"},{"name":"FileLineCharIndex","href":"Hi.Common.FileLines.FileLineCharIndex.html","topicHref":"Hi.Common.FileLines.FileLineCharIndex.html","topicUid":"Hi.Common.FileLines.FileLineCharIndex","type":"Class"},{"name":"FileLineCharIndexSegment","href":"Hi.Common.FileLines.FileLineCharIndexSegment.html","topicHref":"Hi.Common.FileLines.FileLineCharIndexSegment.html","topicUid":"Hi.Common.FileLines.FileLineCharIndexSegment","type":"Class"},{"name":"FileLineIndex","href":"Hi.Common.FileLines.FileLineIndex.html","topicHref":"Hi.Common.FileLines.FileLineIndex.html","topicUid":"Hi.Common.FileLines.FileLineIndex","type":"Class"},{"name":"FileLineUtil","href":"Hi.Common.FileLines.FileLineUtil.html","topicHref":"Hi.Common.FileLines.FileLineUtil.html","topicUid":"Hi.Common.FileLines.FileLineUtil","type":"Class"},{"name":"FileUtil","href":"Hi.Common.FileLines.FileUtil.html","topicHref":"Hi.Common.FileLines.FileUtil.html","topicUid":"Hi.Common.FileLines.FileUtil","type":"Class"},{"name":"IFileChangedEventSupport","href":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicHref":"Hi.Common.FileLines.IFileChangedEventSupport.html","topicUid":"Hi.Common.FileLines.IFileChangedEventSupport","type":"Interface"},{"name":"IFileLine","href":"Hi.Common.FileLines.IFileLine.html","topicHref":"Hi.Common.FileLines.IFileLine.html","topicUid":"Hi.Common.FileLines.IFileLine","type":"Interface"},{"name":"IFileLineCharIndex","href":"Hi.Common.FileLines.IFileLineCharIndex.html","topicHref":"Hi.Common.FileLines.IFileLineCharIndex.html","topicUid":"Hi.Common.FileLines.IFileLineCharIndex","type":"Interface"},{"name":"IFileLineIndex","href":"Hi.Common.FileLines.IFileLineIndex.html","topicHref":"Hi.Common.FileLines.IFileLineIndex.html","topicUid":"Hi.Common.FileLines.IFileLineIndex","type":"Interface"},{"name":"IGetFileLineIndex","href":"Hi.Common.FileLines.IGetFileLineIndex.html","topicHref":"Hi.Common.FileLines.IGetFileLineIndex.html","topicUid":"Hi.Common.FileLines.IGetFileLineIndex","type":"Interface"},{"name":"IGetIndexedFileLine","href":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IGetIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IGetIndexedFileLine","type":"Interface"},{"name":"IIndexedFileLine","href":"Hi.Common.FileLines.IIndexedFileLine.html","topicHref":"Hi.Common.FileLines.IIndexedFileLine.html","topicUid":"Hi.Common.FileLines.IIndexedFileLine","type":"Interface"},{"name":"ILineChangedEventSupport","href":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicHref":"Hi.Common.FileLines.ILineChangedEventSupport.html","topicUid":"Hi.Common.FileLines.ILineChangedEventSupport","type":"Interface"},{"name":"IndexedFile","href":"Hi.Common.FileLines.IndexedFile.html","topicHref":"Hi.Common.FileLines.IndexedFile.html","topicUid":"Hi.Common.FileLines.IndexedFile","type":"Class"},{"name":"IndexedFileLine","href":"Hi.Common.FileLines.IndexedFileLine.html","topicHref":"Hi.Common.FileLines.IndexedFileLine.html","topicUid":"Hi.Common.FileLines.IndexedFileLine","type":"Class"},{"name":"IndexedFileLineChar","href":"Hi.Common.FileLines.IndexedFileLineChar.html","topicHref":"Hi.Common.FileLines.IndexedFileLineChar.html","topicUid":"Hi.Common.FileLines.IndexedFileLineChar","type":"Class"},{"name":"LineBeginEventArgs","href":"Hi.Common.FileLines.LineBeginEventArgs.html","topicHref":"Hi.Common.FileLines.LineBeginEventArgs.html","topicUid":"Hi.Common.FileLines.LineBeginEventArgs","type":"Class"},{"name":"LineEndEventArgs","href":"Hi.Common.FileLines.LineEndEventArgs.html","topicHref":"Hi.Common.FileLines.LineEndEventArgs.html","topicUid":"Hi.Common.FileLines.LineEndEventArgs","type":"Class"}]},{"name":"Hi.Common.Messages","href":"Hi.Common.Messages.html","topicHref":"Hi.Common.Messages.html","topicUid":"Hi.Common.Messages","type":"Namespace","items":[{"name":"ActionProgress","href":"Hi.Common.Messages.ActionProgress-1.html","topicHref":"Hi.Common.Messages.ActionProgress-1.html","topicUid":"Hi.Common.Messages.ActionProgress`1","type":"Class"},{"name":"BootstrapTheme","href":"Hi.Common.Messages.BootstrapTheme.html","topicHref":"Hi.Common.Messages.BootstrapTheme.html","topicUid":"Hi.Common.Messages.BootstrapTheme","type":"Enum"},{"name":"DebugUtil","href":"Hi.Common.Messages.DebugUtil.html","topicHref":"Hi.Common.Messages.DebugUtil.html","topicUid":"Hi.Common.Messages.DebugUtil","type":"Class"},{"name":"ExceptionUtil","href":"Hi.Common.Messages.ExceptionUtil.html","topicHref":"Hi.Common.Messages.ExceptionUtil.html","topicUid":"Hi.Common.Messages.ExceptionUtil","type":"Class"},{"name":"MessageBoardUtil","href":"Hi.Common.Messages.MessageBoardUtil.html","topicHref":"Hi.Common.Messages.MessageBoardUtil.html","topicUid":"Hi.Common.Messages.MessageBoardUtil","type":"Class"},{"name":"MessageFlag","href":"Hi.Common.Messages.MessageFlag.html","topicHref":"Hi.Common.Messages.MessageFlag.html","topicUid":"Hi.Common.Messages.MessageFlag","type":"Enum"},{"name":"MultiTagMessage","href":"Hi.Common.Messages.MultiTagMessage.html","topicHref":"Hi.Common.Messages.MultiTagMessage.html","topicUid":"Hi.Common.Messages.MultiTagMessage","type":"Class"},{"name":"MultiTagMessageUtil","href":"Hi.Common.Messages.MultiTagMessageUtil.html","topicHref":"Hi.Common.Messages.MultiTagMessageUtil.html","topicUid":"Hi.Common.Messages.MultiTagMessageUtil","type":"Class"},{"name":"ShowMessageBoardDelegate","href":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicHref":"Hi.Common.Messages.ShowMessageBoardDelegate.html","topicUid":"Hi.Common.Messages.ShowMessageBoardDelegate","type":"Delegate"}]},{"name":"Hi.Common.MinMaxUtils","href":"Hi.Common.MinMaxUtils.html","topicHref":"Hi.Common.MinMaxUtils.html","topicUid":"Hi.Common.MinMaxUtils","type":"Namespace","items":[{"name":"IndexedMinMaxPos","href":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicHref":"Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html","topicUid":"Hi.Common.MinMaxUtils.IndexedMinMaxPos`2","type":"Class"},{"name":"MinMaxUtil","href":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicHref":"Hi.Common.MinMaxUtils.MinMaxUtil.html","topicUid":"Hi.Common.MinMaxUtils.MinMaxUtil","type":"Class"}]},{"name":"Hi.Common.NativeProgresses","href":"Hi.Common.NativeProgresses.html","topicHref":"Hi.Common.NativeProgresses.html","topicUid":"Hi.Common.NativeProgresses","type":"Namespace","items":[{"name":"NativeProgressFraction","href":"Hi.Common.NativeProgresses.NativeProgressFraction.html","topicHref":"Hi.Common.NativeProgresses.NativeProgressFraction.html","topicUid":"Hi.Common.NativeProgresses.NativeProgressFraction","type":"Class"},{"name":"progress_monitor_t","href":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicHref":"Hi.Common.NativeProgresses.progress_monitor_t.html","topicUid":"Hi.Common.NativeProgresses.progress_monitor_t","type":"Struct"},{"name":"report_progress_func_t","href":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicHref":"Hi.Common.NativeProgresses.report_progress_func_t.html","topicUid":"Hi.Common.NativeProgresses.report_progress_func_t","type":"Delegate"}]},{"name":"Hi.Common.ParallelBulkUtils","href":"Hi.Common.ParallelBulkUtils.html","topicHref":"Hi.Common.ParallelBulkUtils.html","topicUid":"Hi.Common.ParallelBulkUtils","type":"Namespace","items":[{"name":"ParallelBulkReader","href":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkReader`1","type":"Class"},{"name":"ParallelBulkWriter","href":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ParallelBulkWriter`1","type":"Class"},{"name":"ReadBulkDelegate","href":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicHref":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate-1.html","topicUid":"Hi.Common.ParallelBulkUtils.ReadBulkDelegate`1","type":"Delegate"},{"name":"SequentialBulkReader","href":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicHref":"Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html","topicUid":"Hi.Common.ParallelBulkUtils.SequentialBulkReader`1","type":"Class"}]},{"name":"Hi.Common.PathUtils","href":"Hi.Common.PathUtils.html","topicHref":"Hi.Common.PathUtils.html","topicUid":"Hi.Common.PathUtils","type":"Namespace","items":[{"name":"ExtendedNamedPath","href":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicHref":"Hi.Common.PathUtils.ExtendedNamedPath.html","topicUid":"Hi.Common.PathUtils.ExtendedNamedPath","type":"Class"},{"name":"HttpUtil","href":"Hi.Common.PathUtils.HttpUtil.html","topicHref":"Hi.Common.PathUtils.HttpUtil.html","topicUid":"Hi.Common.PathUtils.HttpUtil","type":"Class"},{"name":"Lang","href":"Hi.Common.PathUtils.Lang.html","topicHref":"Hi.Common.PathUtils.Lang.html","topicUid":"Hi.Common.PathUtils.Lang","type":"Class"},{"name":"NamedPath","href":"Hi.Common.PathUtils.NamedPath.html","topicHref":"Hi.Common.PathUtils.NamedPath.html","topicUid":"Hi.Common.PathUtils.NamedPath","type":"Class"},{"name":"PathUtil","href":"Hi.Common.PathUtils.PathUtil.html","topicHref":"Hi.Common.PathUtils.PathUtil.html","topicUid":"Hi.Common.PathUtils.PathUtil","type":"Class"}]},{"name":"Hi.Common.QueueCacheUtils","href":"Hi.Common.QueueCacheUtils.html","topicHref":"Hi.Common.QueueCacheUtils.html","topicUid":"Hi.Common.QueueCacheUtils","type":"Namespace","items":[{"name":"QueueCacherHost","href":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacherHost-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacherHost`1","type":"Class"},{"name":"QueueCacher","href":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicHref":"Hi.Common.QueueCacheUtils.QueueCacher-1.html","topicUid":"Hi.Common.QueueCacheUtils.QueueCacher`1","type":"Class"}]},{"name":"Hi.Common.XmlUtils","href":"Hi.Common.XmlUtils.html","topicHref":"Hi.Common.XmlUtils.html","topicUid":"Hi.Common.XmlUtils","type":"Namespace","items":[{"name":"FileRefSource","href":"Hi.Common.XmlUtils.FileRefSource-1.html","topicHref":"Hi.Common.XmlUtils.FileRefSource-1.html","topicUid":"Hi.Common.XmlUtils.FileRefSource`1","type":"Class"},{"name":"IMakeXmlSource","href":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicHref":"Hi.Common.XmlUtils.IMakeXmlSource.html","topicUid":"Hi.Common.XmlUtils.IMakeXmlSource","type":"Interface"},{"name":"IToXElement","href":"Hi.Common.XmlUtils.IToXElement.html","topicHref":"Hi.Common.XmlUtils.IToXElement.html","topicUid":"Hi.Common.XmlUtils.IToXElement","type":"Interface"},{"name":"ProjectApiVersion","href":"Hi.Common.XmlUtils.ProjectApiVersion.html","topicHref":"Hi.Common.XmlUtils.ProjectApiVersion.html","topicUid":"Hi.Common.XmlUtils.ProjectApiVersion","type":"Class"},{"name":"SetFileDelegate","href":"Hi.Common.XmlUtils.SetFileDelegate.html","topicHref":"Hi.Common.XmlUtils.SetFileDelegate.html","topicUid":"Hi.Common.XmlUtils.SetFileDelegate","type":"Delegate"},{"name":"XFactory","href":"Hi.Common.XmlUtils.XFactory.html","topicHref":"Hi.Common.XmlUtils.XFactory.html","topicUid":"Hi.Common.XmlUtils.XFactory","type":"Class"},{"name":"XFactory.XGeneratorDelegate","href":"Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.XGeneratorDelegate","type":"Delegate"},{"name":"XFactory.XmlExceptionDelegate","href":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicHref":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html","topicUid":"Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate","type":"Delegate"},{"name":"XmlUtil","href":"Hi.Common.XmlUtils.XmlUtil.html","topicHref":"Hi.Common.XmlUtils.XmlUtil.html","topicUid":"Hi.Common.XmlUtils.XmlUtil","type":"Class"}]},{"name":"Hi.CutterLocations","href":"Hi.CutterLocations.html","topicHref":"Hi.CutterLocations.html","topicUid":"Hi.CutterLocations","type":"Namespace","items":[{"name":"IGetProgramCl","href":"Hi.CutterLocations.IGetProgramCl.html","topicHref":"Hi.CutterLocations.IGetProgramCl.html","topicUid":"Hi.CutterLocations.IGetProgramCl","type":"Interface"},{"name":"SimpleCl","href":"Hi.CutterLocations.SimpleCl.html","topicHref":"Hi.CutterLocations.SimpleCl.html","topicUid":"Hi.CutterLocations.SimpleCl","type":"Class"}]},{"name":"Hi.CutterLocations.ClPath","href":"Hi.CutterLocations.ClPath.html","topicHref":"Hi.CutterLocations.ClPath.html","topicUid":"Hi.CutterLocations.ClPath","type":"Namespace","items":[{"name":"ClCircleArc","href":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicHref":"Hi.CutterLocations.ClPath.ClCircleArc.html","topicUid":"Hi.CutterLocations.ClPath.ClCircleArc","type":"Class"},{"name":"ClLinear","href":"Hi.CutterLocations.ClPath.ClLinear.html","topicHref":"Hi.CutterLocations.ClPath.ClLinear.html","topicUid":"Hi.CutterLocations.ClPath.ClLinear","type":"Class"},{"name":"IClPath","href":"Hi.CutterLocations.ClPath.IClPath.html","topicHref":"Hi.CutterLocations.ClPath.IClPath.html","topicUid":"Hi.CutterLocations.ClPath.IClPath","type":"Interface"}]},{"name":"Hi.CutterLocations.ClStrips","href":"Hi.CutterLocations.ClStrips.html","topicHref":"Hi.CutterLocations.ClStrips.html","topicUid":"Hi.CutterLocations.ClStrips","type":"Namespace","items":[{"name":"ClStrip","href":"Hi.CutterLocations.ClStrips.ClStrip.html","topicHref":"Hi.CutterLocations.ClStrips.ClStrip.html","topicUid":"Hi.CutterLocations.ClStrips.ClStrip","type":"Class"},{"name":"ClStripPos","href":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicHref":"Hi.CutterLocations.ClStrips.ClStripPos.html","topicUid":"Hi.CutterLocations.ClStrips.ClStripPos","type":"Class"},{"name":"RgbFunc","href":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicHref":"Hi.CutterLocations.ClStrips.RgbFunc.html","topicUid":"Hi.CutterLocations.ClStrips.RgbFunc","type":"Delegate"}]},{"name":"Hi.Disp","href":"Hi.Disp.html","topicHref":"Hi.Disp.html","topicUid":"Hi.Disp","type":"Namespace","items":[{"name":"Bind","href":"Hi.Disp.Bind.html","topicHref":"Hi.Disp.Bind.html","topicUid":"Hi.Disp.Bind","type":"Class"},{"name":"Box3dDispUtil","href":"Hi.Disp.Box3dDispUtil.html","topicHref":"Hi.Disp.Box3dDispUtil.html","topicUid":"Hi.Disp.Box3dDispUtil","type":"Class"},{"name":"Box3dDispUtil.BoxableExpandToBox3dDel","href":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicHref":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel.html","topicUid":"Hi.Disp.Box3dDispUtil.BoxableExpandToBox3dDel","type":"Delegate"},{"name":"DelegateFuncDisplayee","href":"Hi.Disp.DelegateFuncDisplayee.html","topicHref":"Hi.Disp.DelegateFuncDisplayee.html","topicUid":"Hi.Disp.DelegateFuncDisplayee","type":"Class"},{"name":"DispEngine","href":"Hi.Disp.DispEngine.html","topicHref":"Hi.Disp.DispEngine.html","topicUid":"Hi.Disp.DispEngine","type":"Class"},{"name":"DispEngine.ImageRequestedDelegate","href":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicHref":"Hi.Disp.DispEngine.ImageRequestedDelegate.html","topicUid":"Hi.Disp.DispEngine.ImageRequestedDelegate","type":"Delegate"},{"name":"DispEngineConfig","href":"Hi.Disp.DispEngineConfig.html","topicHref":"Hi.Disp.DispEngineConfig.html","topicUid":"Hi.Disp.DispEngineConfig","type":"Class"},{"name":"DispFrameUtil","href":"Hi.Disp.DispFrameUtil.html","topicHref":"Hi.Disp.DispFrameUtil.html","topicUid":"Hi.Disp.DispFrameUtil","type":"Class"},{"name":"DispList","href":"Hi.Disp.DispList.html","topicHref":"Hi.Disp.DispList.html","topicUid":"Hi.Disp.DispList","type":"Class"},{"name":"DispUtil","href":"Hi.Disp.DispUtil.html","topicHref":"Hi.Disp.DispUtil.html","topicUid":"Hi.Disp.DispUtil","type":"Class"},{"name":"Drawing","href":"Hi.Disp.Drawing.html","topicHref":"Hi.Disp.Drawing.html","topicUid":"Hi.Disp.Drawing","type":"Class"},{"name":"FuncDisplayee","href":"Hi.Disp.FuncDisplayee.html","topicHref":"Hi.Disp.FuncDisplayee.html","topicUid":"Hi.Disp.FuncDisplayee","type":"Class"},{"name":"GL","href":"Hi.Disp.GL.html","topicHref":"Hi.Disp.GL.html","topicUid":"Hi.Disp.GL","type":"Class"},{"name":"IDisplayee","href":"Hi.Disp.IDisplayee.html","topicHref":"Hi.Disp.IDisplayee.html","topicUid":"Hi.Disp.IDisplayee","type":"Interface"},{"name":"IGetDispEngine","href":"Hi.Disp.IGetDispEngine.html","topicHref":"Hi.Disp.IGetDispEngine.html","topicUid":"Hi.Disp.IGetDispEngine","type":"Interface"},{"name":"IGetPickable","href":"Hi.Disp.IGetPickable.html","topicHref":"Hi.Disp.IGetPickable.html","topicUid":"Hi.Disp.IGetPickable","type":"Interface"},{"name":"IGlContextDirver","href":"Hi.Disp.IGlContextDirver.html","topicHref":"Hi.Disp.IGlContextDirver.html","topicUid":"Hi.Disp.IGlContextDirver","type":"Interface"},{"name":"MatStack","href":"Hi.Disp.MatStack.html","topicHref":"Hi.Disp.MatStack.html","topicUid":"Hi.Disp.MatStack","type":"Class"},{"name":"MatStack.ItemDisposable","href":"Hi.Disp.MatStack.ItemDisposable.html","topicHref":"Hi.Disp.MatStack.ItemDisposable.html","topicUid":"Hi.Disp.MatStack.ItemDisposable","type":"Class"},{"name":"MvpBoxRelation","href":"Hi.Disp.MvpBoxRelation.html","topicHref":"Hi.Disp.MvpBoxRelation.html","topicUid":"Hi.Disp.MvpBoxRelation","type":"Enum"},{"name":"Pickable","href":"Hi.Disp.Pickable.html","topicHref":"Hi.Disp.Pickable.html","topicUid":"Hi.Disp.Pickable","type":"Class"},{"name":"PopModelMat","href":"Hi.Disp.PopModelMat.html","topicHref":"Hi.Disp.PopModelMat.html","topicUid":"Hi.Disp.PopModelMat","type":"Class"},{"name":"PushModelMat","href":"Hi.Disp.PushModelMat.html","topicHref":"Hi.Disp.PushModelMat.html","topicUid":"Hi.Disp.PushModelMat","type":"Class"},{"name":"Segment3dDispUtil","href":"Hi.Disp.Segment3dDispUtil.html","topicHref":"Hi.Disp.Segment3dDispUtil.html","topicUid":"Hi.Disp.Segment3dDispUtil","type":"Class"},{"name":"ShowEventPickable","href":"Hi.Disp.ShowEventPickable.html","topicHref":"Hi.Disp.ShowEventPickable.html","topicUid":"Hi.Disp.ShowEventPickable","type":"Class"},{"name":"Stamp","href":"Hi.Disp.Stamp.html","topicHref":"Hi.Disp.Stamp.html","topicUid":"Hi.Disp.Stamp","type":"Enum"},{"name":"StringDrawing","href":"Hi.Disp.StringDrawing.html","topicHref":"Hi.Disp.StringDrawing.html","topicUid":"Hi.Disp.StringDrawing","type":"Class"},{"name":"Tri3dDispUtil","href":"Hi.Disp.Tri3dDispUtil.html","topicHref":"Hi.Disp.Tri3dDispUtil.html","topicUid":"Hi.Disp.Tri3dDispUtil","type":"Class"},{"name":"Vec3dDispUtil","href":"Hi.Disp.Vec3dDispUtil.html","topicHref":"Hi.Disp.Vec3dDispUtil.html","topicUid":"Hi.Disp.Vec3dDispUtil","type":"Class"},{"name":"WrappedDisplayee","href":"Hi.Disp.WrappedDisplayee.html","topicHref":"Hi.Disp.WrappedDisplayee.html","topicUid":"Hi.Disp.WrappedDisplayee","type":"Class"}]},{"name":"Hi.Disp.Flag","href":"Hi.Disp.Flag.html","topicHref":"Hi.Disp.Flag.html","topicUid":"Hi.Disp.Flag","type":"Namespace","items":[{"name":"ColorScaleBar","href":"Hi.Disp.Flag.ColorScaleBar.html","topicHref":"Hi.Disp.Flag.ColorScaleBar.html","topicUid":"Hi.Disp.Flag.ColorScaleBar","type":"Class"},{"name":"CoordinateDrawing","href":"Hi.Disp.Flag.CoordinateDrawing.html","topicHref":"Hi.Disp.Flag.CoordinateDrawing.html","topicUid":"Hi.Disp.Flag.CoordinateDrawing","type":"Class"},{"name":"CubicalFlagDrawing","href":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicHref":"Hi.Disp.Flag.CubicalFlagDrawing.html","topicUid":"Hi.Disp.Flag.CubicalFlagDrawing","type":"Class"},{"name":"DimensionBar","href":"Hi.Disp.Flag.DimensionBar.html","topicHref":"Hi.Disp.Flag.DimensionBar.html","topicUid":"Hi.Disp.Flag.DimensionBar","type":"Class"},{"name":"DispCoverUtil","href":"Hi.Disp.Flag.DispCoverUtil.html","topicHref":"Hi.Disp.Flag.DispCoverUtil.html","topicUid":"Hi.Disp.Flag.DispCoverUtil","type":"Class"}]},{"name":"Hi.Disp.Treat","href":"Hi.Disp.Treat.html","topicHref":"Hi.Disp.Treat.html","topicUid":"Hi.Disp.Treat","type":"Namespace","items":[{"name":"LineWidthSwap","href":"Hi.Disp.Treat.LineWidthSwap.html","topicHref":"Hi.Disp.Treat.LineWidthSwap.html","topicUid":"Hi.Disp.Treat.LineWidthSwap","type":"Class"},{"name":"LineWidthTreat","href":"Hi.Disp.Treat.LineWidthTreat.html","topicHref":"Hi.Disp.Treat.LineWidthTreat.html","topicUid":"Hi.Disp.Treat.LineWidthTreat","type":"Class"},{"name":"PointSizeSwap","href":"Hi.Disp.Treat.PointSizeSwap.html","topicHref":"Hi.Disp.Treat.PointSizeSwap.html","topicUid":"Hi.Disp.Treat.PointSizeSwap","type":"Class"},{"name":"PointSizeTreat","href":"Hi.Disp.Treat.PointSizeTreat.html","topicHref":"Hi.Disp.Treat.PointSizeTreat.html","topicUid":"Hi.Disp.Treat.PointSizeTreat","type":"Class"},{"name":"RgbSwap","href":"Hi.Disp.Treat.RgbSwap.html","topicHref":"Hi.Disp.Treat.RgbSwap.html","topicUid":"Hi.Disp.Treat.RgbSwap","type":"Class"},{"name":"RgbTreat","href":"Hi.Disp.Treat.RgbTreat.html","topicHref":"Hi.Disp.Treat.RgbTreat.html","topicUid":"Hi.Disp.Treat.RgbTreat","type":"Class"},{"name":"RgbWrapper","href":"Hi.Disp.Treat.RgbWrapper.html","topicHref":"Hi.Disp.Treat.RgbWrapper.html","topicUid":"Hi.Disp.Treat.RgbWrapper","type":"Class"},{"name":"TransformationWrapper","href":"Hi.Disp.Treat.TransformationWrapper.html","topicHref":"Hi.Disp.Treat.TransformationWrapper.html","topicUid":"Hi.Disp.Treat.TransformationWrapper","type":"Class"}]},{"name":"Hi.Fanuc","href":"Hi.Fanuc.html","topicHref":"Hi.Fanuc.html","topicUid":"Hi.Fanuc","type":"Namespace","items":[{"name":"FanucVarTable","href":"Hi.Fanuc.FanucVarTable.html","topicHref":"Hi.Fanuc.FanucVarTable.html","topicUid":"Hi.Fanuc.FanucVarTable","type":"Class"},{"name":"FanucVarValue","href":"Hi.Fanuc.FanucVarValue.html","topicHref":"Hi.Fanuc.FanucVarValue.html","topicUid":"Hi.Fanuc.FanucVarValue","type":"Struct"}]},{"name":"Hi.Geom","href":"Hi.Geom.html","topicHref":"Hi.Geom.html","topicUid":"Hi.Geom","type":"Namespace","items":[{"name":"ArrayUtil","href":"Hi.Geom.ArrayUtil.html","topicHref":"Hi.Geom.ArrayUtil.html","topicUid":"Hi.Geom.ArrayUtil","type":"Class"},{"name":"AxisAngle4d","href":"Hi.Geom.AxisAngle4d.html","topicHref":"Hi.Geom.AxisAngle4d.html","topicUid":"Hi.Geom.AxisAngle4d","type":"Class"},{"name":"Box2d","href":"Hi.Geom.Box2d.html","topicHref":"Hi.Geom.Box2d.html","topicUid":"Hi.Geom.Box2d","type":"Class"},{"name":"Box2d.NoInit","href":"Hi.Geom.Box2d.NoInit.html","topicHref":"Hi.Geom.Box2d.NoInit.html","topicUid":"Hi.Geom.Box2d.NoInit","type":"Class"},{"name":"Box3d","href":"Hi.Geom.Box3d.html","topicHref":"Hi.Geom.Box3d.html","topicUid":"Hi.Geom.Box3d","type":"Class"},{"name":"Box3d.NoInit","href":"Hi.Geom.Box3d.NoInit.html","topicHref":"Hi.Geom.Box3d.NoInit.html","topicUid":"Hi.Geom.Box3d.NoInit","type":"Class"},{"name":"Cylindroid","href":"Hi.Geom.Cylindroid.html","topicHref":"Hi.Geom.Cylindroid.html","topicUid":"Hi.Geom.Cylindroid","type":"Class"},{"name":"DVec3d","href":"Hi.Geom.DVec3d.html","topicHref":"Hi.Geom.DVec3d.html","topicUid":"Hi.Geom.DVec3d","type":"Class"},{"name":"Dir","href":"Hi.Geom.Dir.html","topicHref":"Hi.Geom.Dir.html","topicUid":"Hi.Geom.Dir","type":"Enum"},{"name":"ExtendedCylinder","href":"Hi.Geom.ExtendedCylinder.html","topicHref":"Hi.Geom.ExtendedCylinder.html","topicUid":"Hi.Geom.ExtendedCylinder","type":"Class"},{"name":"Flat3d","href":"Hi.Geom.Flat3d.html","topicHref":"Hi.Geom.Flat3d.html","topicUid":"Hi.Geom.Flat3d","type":"Class"},{"name":"FractionStatus","href":"Hi.Geom.FractionStatus.html","topicHref":"Hi.Geom.FractionStatus.html","topicUid":"Hi.Geom.FractionStatus","type":"Enum"},{"name":"Fraction","href":"Hi.Geom.Fraction-1.html","topicHref":"Hi.Geom.Fraction-1.html","topicUid":"Hi.Geom.Fraction`1","type":"Struct"},{"name":"GeomCombination","href":"Hi.Geom.GeomCombination.html","topicHref":"Hi.Geom.GeomCombination.html","topicUid":"Hi.Geom.GeomCombination","type":"Class"},{"name":"GeomUtil","href":"Hi.Geom.GeomUtil.html","topicHref":"Hi.Geom.GeomUtil.html","topicUid":"Hi.Geom.GeomUtil","type":"Class"},{"name":"IExpandToBox2d","href":"Hi.Geom.IExpandToBox2d.html","topicHref":"Hi.Geom.IExpandToBox2d.html","topicUid":"Hi.Geom.IExpandToBox2d","type":"Interface"},{"name":"IExpandToBox3d","href":"Hi.Geom.IExpandToBox3d.html","topicHref":"Hi.Geom.IExpandToBox3d.html","topicUid":"Hi.Geom.IExpandToBox3d","type":"Interface"},{"name":"IFlat3d","href":"Hi.Geom.IFlat3d.html","topicHref":"Hi.Geom.IFlat3d.html","topicUid":"Hi.Geom.IFlat3d","type":"Interface"},{"name":"IGenStl","href":"Hi.Geom.IGenStl.html","topicHref":"Hi.Geom.IGenStl.html","topicUid":"Hi.Geom.IGenStl","type":"Interface"},{"name":"IGeomProperty","href":"Hi.Geom.IGeomProperty.html","topicHref":"Hi.Geom.IGeomProperty.html","topicUid":"Hi.Geom.IGeomProperty","type":"Interface"},{"name":"IGetStl","href":"Hi.Geom.IGetStl.html","topicHref":"Hi.Geom.IGetStl.html","topicUid":"Hi.Geom.IGetStl","type":"Interface"},{"name":"IGetZrContour","href":"Hi.Geom.IGetZrContour.html","topicHref":"Hi.Geom.IGetZrContour.html","topicUid":"Hi.Geom.IGetZrContour","type":"Interface"},{"name":"IGetZrList","href":"Hi.Geom.IGetZrList.html","topicHref":"Hi.Geom.IGetZrList.html","topicUid":"Hi.Geom.IGetZrList","type":"Interface"},{"name":"IStlSource","href":"Hi.Geom.IStlSource.html","topicHref":"Hi.Geom.IStlSource.html","topicUid":"Hi.Geom.IStlSource","type":"Interface"},{"name":"ITri3d","href":"Hi.Geom.ITri3d.html","topicHref":"Hi.Geom.ITri3d.html","topicUid":"Hi.Geom.ITri3d","type":"Interface"},{"name":"IVec","href":"Hi.Geom.IVec-1.html","topicHref":"Hi.Geom.IVec-1.html","topicUid":"Hi.Geom.IVec`1","type":"Interface"},{"name":"IZrListSourceProperty","href":"Hi.Geom.IZrListSourceProperty.html","topicHref":"Hi.Geom.IZrListSourceProperty.html","topicUid":"Hi.Geom.IZrListSourceProperty","type":"Interface"},{"name":"Mat4d","href":"Hi.Geom.Mat4d.html","topicHref":"Hi.Geom.Mat4d.html","topicUid":"Hi.Geom.Mat4d","type":"Class"},{"name":"Mat4d.IndexFlag","href":"Hi.Geom.Mat4d.IndexFlag.html","topicHref":"Hi.Geom.Mat4d.IndexFlag.html","topicUid":"Hi.Geom.Mat4d.IndexFlag","type":"Enum"},{"name":"MathNetUtil","href":"Hi.Geom.MathNetUtil.html","topicHref":"Hi.Geom.MathNetUtil.html","topicUid":"Hi.Geom.MathNetUtil","type":"Class"},{"name":"MathUtil","href":"Hi.Geom.MathUtil.html","topicHref":"Hi.Geom.MathUtil.html","topicUid":"Hi.Geom.MathUtil","type":"Class"},{"name":"NativeFraction","href":"Hi.Geom.NativeFraction.html","topicHref":"Hi.Geom.NativeFraction.html","topicUid":"Hi.Geom.NativeFraction","type":"Class"},{"name":"NativeStl","href":"Hi.Geom.NativeStl.html","topicHref":"Hi.Geom.NativeStl.html","topicUid":"Hi.Geom.NativeStl","type":"Class"},{"name":"NativeTopoStld","href":"Hi.Geom.NativeTopoStld.html","topicHref":"Hi.Geom.NativeTopoStld.html","topicUid":"Hi.Geom.NativeTopoStld","type":"Class"},{"name":"NativeTopoStlfr","href":"Hi.Geom.NativeTopoStlfr.html","topicHref":"Hi.Geom.NativeTopoStlfr.html","topicUid":"Hi.Geom.NativeTopoStlfr","type":"Class"},{"name":"ObjUtil","href":"Hi.Geom.ObjUtil.html","topicHref":"Hi.Geom.ObjUtil.html","topicUid":"Hi.Geom.ObjUtil","type":"Class"},{"name":"PairZr","href":"Hi.Geom.PairZr.html","topicHref":"Hi.Geom.PairZr.html","topicUid":"Hi.Geom.PairZr","type":"Class"},{"name":"PairZrUtil","href":"Hi.Geom.PairZrUtil.html","topicHref":"Hi.Geom.PairZrUtil.html","topicUid":"Hi.Geom.PairZrUtil","type":"Class"},{"name":"PlyUtil","href":"Hi.Geom.PlyUtil.html","topicHref":"Hi.Geom.PlyUtil.html","topicUid":"Hi.Geom.PlyUtil","type":"Class"},{"name":"Polar3d","href":"Hi.Geom.Polar3d.html","topicHref":"Hi.Geom.Polar3d.html","topicUid":"Hi.Geom.Polar3d","type":"Class"},{"name":"Segment3d","href":"Hi.Geom.Segment3d.html","topicHref":"Hi.Geom.Segment3d.html","topicUid":"Hi.Geom.Segment3d","type":"Class"},{"name":"Stl","href":"Hi.Geom.Stl.html","topicHref":"Hi.Geom.Stl.html","topicUid":"Hi.Geom.Stl","type":"Class"},{"name":"Stl.StlType","href":"Hi.Geom.Stl.StlType.html","topicHref":"Hi.Geom.Stl.StlType.html","topicUid":"Hi.Geom.Stl.StlType","type":"Enum"},{"name":"StlFile","href":"Hi.Geom.StlFile.html","topicHref":"Hi.Geom.StlFile.html","topicUid":"Hi.Geom.StlFile","type":"Class"},{"name":"StlFuncHost","href":"Hi.Geom.StlFuncHost.html","topicHref":"Hi.Geom.StlFuncHost.html","topicUid":"Hi.Geom.StlFuncHost","type":"Class"},{"name":"StlUtil","href":"Hi.Geom.StlUtil.html","topicHref":"Hi.Geom.StlUtil.html","topicUid":"Hi.Geom.StlUtil","type":"Class"},{"name":"TransformationGeom","href":"Hi.Geom.TransformationGeom.html","topicHref":"Hi.Geom.TransformationGeom.html","topicUid":"Hi.Geom.TransformationGeom","type":"Class"},{"name":"Tri3d","href":"Hi.Geom.Tri3d.html","topicHref":"Hi.Geom.Tri3d.html","topicUid":"Hi.Geom.Tri3d","type":"Class"},{"name":"Tri3dUtil","href":"Hi.Geom.Tri3dUtil.html","topicHref":"Hi.Geom.Tri3dUtil.html","topicUid":"Hi.Geom.Tri3dUtil","type":"Class"},{"name":"Vec2d","href":"Hi.Geom.Vec2d.html","topicHref":"Hi.Geom.Vec2d.html","topicUid":"Hi.Geom.Vec2d","type":"Class"},{"name":"Vec2i","href":"Hi.Geom.Vec2i.html","topicHref":"Hi.Geom.Vec2i.html","topicUid":"Hi.Geom.Vec2i","type":"Class"},{"name":"Vec3d","href":"Hi.Geom.Vec3d.html","topicHref":"Hi.Geom.Vec3d.html","topicUid":"Hi.Geom.Vec3d","type":"Class"}]},{"name":"Hi.Geom.Resolution","href":"Hi.Geom.Resolution.html","topicHref":"Hi.Geom.Resolution.html","topicUid":"Hi.Geom.Resolution","type":"Namespace","items":[{"name":"IPolarResolution2d","href":"Hi.Geom.Resolution.IPolarResolution2d.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2d.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2d","type":"Interface"},{"name":"IPolarResolution2dSourceProperty","href":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicHref":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html","topicUid":"Hi.Geom.Resolution.IPolarResolution2dSourceProperty","type":"Interface"},{"name":"PolarResolution2d","href":"Hi.Geom.Resolution.PolarResolution2d.html","topicHref":"Hi.Geom.Resolution.PolarResolution2d.html","topicUid":"Hi.Geom.Resolution.PolarResolution2d","type":"Class"}]},{"name":"Hi.Geom.Solvers","href":"Hi.Geom.Solvers.html","topicHref":"Hi.Geom.Solvers.html","topicUid":"Hi.Geom.Solvers","type":"Namespace","items":[{"name":"BinarySolverUtil","href":"Hi.Geom.Solvers.BinarySolverUtil.html","topicHref":"Hi.Geom.Solvers.BinarySolverUtil.html","topicUid":"Hi.Geom.Solvers.BinarySolverUtil","type":"Class"},{"name":"BinarySolvingEntry","href":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicHref":"Hi.Geom.Solvers.BinarySolvingEntry.html","topicUid":"Hi.Geom.Solvers.BinarySolvingEntry","type":"Class"},{"name":"DeepSolvingStatus","href":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicHref":"Hi.Geom.Solvers.DeepSolvingStatus.html","topicUid":"Hi.Geom.Solvers.DeepSolvingStatus","type":"Class"},{"name":"NumericalSolver","href":"Hi.Geom.Solvers.NumericalSolver.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.html","topicUid":"Hi.Geom.Solvers.NumericalSolver","type":"Class"},{"name":"NumericalSolver.GetRepondsDelegate","href":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.GetRepondsDelegate","type":"Delegate"},{"name":"NumericalSolver.SetParasDelegate","href":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicHref":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate.html","topicUid":"Hi.Geom.Solvers.NumericalSolver.SetParasDelegate","type":"Delegate"},{"name":"SolverUtil","href":"Hi.Geom.Solvers.SolverUtil.html","topicHref":"Hi.Geom.Solvers.SolverUtil.html","topicUid":"Hi.Geom.Solvers.SolverUtil","type":"Class"},{"name":"SolvingResult","href":"Hi.Geom.Solvers.SolvingResult.html","topicHref":"Hi.Geom.Solvers.SolvingResult.html","topicUid":"Hi.Geom.Solvers.SolvingResult","type":"Class"},{"name":"SolvingStatus","href":"Hi.Geom.Solvers.SolvingStatus.html","topicHref":"Hi.Geom.Solvers.SolvingStatus.html","topicUid":"Hi.Geom.Solvers.SolvingStatus","type":"Enum"},{"name":"SolvingTerm","href":"Hi.Geom.Solvers.SolvingTerm.html","topicHref":"Hi.Geom.Solvers.SolvingTerm.html","topicUid":"Hi.Geom.Solvers.SolvingTerm","type":"Enum"}]},{"name":"Hi.Geom.Topo","href":"Hi.Geom.Topo.html","topicHref":"Hi.Geom.Topo.html","topicUid":"Hi.Geom.Topo","type":"Namespace","items":[{"name":"TopoLine3Hfr","href":"Hi.Geom.Topo.TopoLine3Hfr.html","topicHref":"Hi.Geom.Topo.TopoLine3Hfr.html","topicUid":"Hi.Geom.Topo.TopoLine3Hfr","type":"Class"},{"name":"TopoLine3StockHfr","href":"Hi.Geom.Topo.TopoLine3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoLine3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoLine3StockHfr","type":"Class"},{"name":"TopoPoint3Hfr","href":"Hi.Geom.Topo.TopoPoint3Hfr.html","topicHref":"Hi.Geom.Topo.TopoPoint3Hfr.html","topicUid":"Hi.Geom.Topo.TopoPoint3Hfr","type":"Class"},{"name":"TopoPoint3StockHfr","href":"Hi.Geom.Topo.TopoPoint3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoPoint3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoPoint3StockHfr","type":"Class"},{"name":"TopoStl3Hfr","href":"Hi.Geom.Topo.TopoStl3Hfr.html","topicHref":"Hi.Geom.Topo.TopoStl3Hfr.html","topicUid":"Hi.Geom.Topo.TopoStl3Hfr","type":"Class"},{"name":"TopoStl3HfrFlatDisplayee","href":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html","topicHref":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html","topicUid":"Hi.Geom.Topo.TopoStl3HfrFlatDisplayee","type":"Class"},{"name":"TopoStl3HfrSmoothDisplayee","href":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html","topicHref":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html","topicUid":"Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee","type":"Class"},{"name":"TopoTri3Hfr","href":"Hi.Geom.Topo.TopoTri3Hfr.html","topicHref":"Hi.Geom.Topo.TopoTri3Hfr.html","topicUid":"Hi.Geom.Topo.TopoTri3Hfr","type":"Class"},{"name":"TopoTri3StockHfr","href":"Hi.Geom.Topo.TopoTri3StockHfr.html","topicHref":"Hi.Geom.Topo.TopoTri3StockHfr.html","topicUid":"Hi.Geom.Topo.TopoTri3StockHfr","type":"Class"},{"name":"Vec3Hfr","href":"Hi.Geom.Topo.Vec3Hfr.html","topicHref":"Hi.Geom.Topo.Vec3Hfr.html","topicUid":"Hi.Geom.Topo.Vec3Hfr","type":"Struct"}]},{"name":"Hi.Geom.UnitUtils","href":"Hi.Geom.UnitUtils.html","topicHref":"Hi.Geom.UnitUtils.html","topicUid":"Hi.Geom.UnitUtils","type":"Namespace","items":[{"name":"PhysicsUnit","href":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicHref":"Hi.Geom.UnitUtils.PhysicsUnit.html","topicUid":"Hi.Geom.UnitUtils.PhysicsUnit","type":"Enum"},{"name":"StringValueAttribute","href":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicHref":"Hi.Geom.UnitUtils.StringValueAttribute.html","topicUid":"Hi.Geom.UnitUtils.StringValueAttribute","type":"Class"},{"name":"UnitConvertUtil","href":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicHref":"Hi.Geom.UnitUtils.UnitConvertUtil.html","topicUid":"Hi.Geom.UnitUtils.UnitConvertUtil","type":"Class"}]},{"name":"Hi.Grpcs","href":"Hi.Grpcs.html","topicHref":"Hi.Grpcs.html","topicUid":"Hi.Grpcs","type":"Namespace","items":[{"name":"ClStripService","href":"Hi.Grpcs.ClStripService.html","topicHref":"Hi.Grpcs.ClStripService.html","topicUid":"Hi.Grpcs.ClStripService","type":"Class"},{"name":"ClStripService.ClStripServiceBase","href":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceBase.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceBase","type":"Class"},{"name":"ClStripService.ClStripServiceClient","href":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicHref":"Hi.Grpcs.ClStripService.ClStripServiceClient.html","topicUid":"Hi.Grpcs.ClStripService.ClStripServiceClient","type":"Class"},{"name":"ClStripServiceReflection","href":"Hi.Grpcs.ClStripServiceReflection.html","topicHref":"Hi.Grpcs.ClStripServiceReflection.html","topicUid":"Hi.Grpcs.ClStripServiceReflection","type":"Class"},{"name":"ClStripServiceRunner","href":"Hi.Grpcs.ClStripServiceRunner.html","topicHref":"Hi.Grpcs.ClStripServiceRunner.html","topicUid":"Hi.Grpcs.ClStripServiceRunner","type":"Class"},{"name":"DictionaryStep","href":"Hi.Grpcs.DictionaryStep.html","topicHref":"Hi.Grpcs.DictionaryStep.html","topicUid":"Hi.Grpcs.DictionaryStep","type":"Class"},{"name":"PlayerService","href":"Hi.Grpcs.PlayerService.html","topicHref":"Hi.Grpcs.PlayerService.html","topicUid":"Hi.Grpcs.PlayerService","type":"Class"},{"name":"PlayerService.PlayerServiceBase","href":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceBase.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceBase","type":"Class"},{"name":"PlayerService.PlayerServiceClient","href":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicHref":"Hi.Grpcs.PlayerService.PlayerServiceClient.html","topicUid":"Hi.Grpcs.PlayerService.PlayerServiceClient","type":"Class"},{"name":"PlayerServiceReflection","href":"Hi.Grpcs.PlayerServiceReflection.html","topicHref":"Hi.Grpcs.PlayerServiceReflection.html","topicUid":"Hi.Grpcs.PlayerServiceReflection","type":"Class"},{"name":"PlayerServiceRunner","href":"Hi.Grpcs.PlayerServiceRunner.html","topicHref":"Hi.Grpcs.PlayerServiceRunner.html","topicUid":"Hi.Grpcs.PlayerServiceRunner","type":"Class"}]},{"name":"Hi.HiNcKits","href":"Hi.HiNcKits.html","topicHref":"Hi.HiNcKits.html","topicUid":"Hi.HiNcKits","type":"Namespace","items":[{"name":"BasePathEnum","href":"Hi.HiNcKits.BasePathEnum.html","topicHref":"Hi.HiNcKits.BasePathEnum.html","topicUid":"Hi.HiNcKits.BasePathEnum","type":"Enum"},{"name":"HiNcHost","href":"Hi.HiNcKits.HiNcHost.html","topicHref":"Hi.HiNcKits.HiNcHost.html","topicUid":"Hi.HiNcKits.HiNcHost","type":"Class"},{"name":"LocalApp","href":"Hi.HiNcKits.LocalApp.html","topicHref":"Hi.HiNcKits.LocalApp.html","topicUid":"Hi.HiNcKits.LocalApp","type":"Class"},{"name":"LocalAppConfig","href":"Hi.HiNcKits.LocalAppConfig.html","topicHref":"Hi.HiNcKits.LocalAppConfig.html","topicUid":"Hi.HiNcKits.LocalAppConfig","type":"Class"},{"name":"PlayerDivConfig","href":"Hi.HiNcKits.PlayerDivConfig.html","topicHref":"Hi.HiNcKits.PlayerDivConfig.html","topicUid":"Hi.HiNcKits.PlayerDivConfig","type":"Class"},{"name":"ProxyConfig","href":"Hi.HiNcKits.ProxyConfig.html","topicHref":"Hi.HiNcKits.ProxyConfig.html","topicUid":"Hi.HiNcKits.ProxyConfig","type":"Class"},{"name":"UserConfig","href":"Hi.HiNcKits.UserConfig.html","topicHref":"Hi.HiNcKits.UserConfig.html","topicUid":"Hi.HiNcKits.UserConfig","type":"Class"},{"name":"UserService","href":"Hi.HiNcKits.UserService.html","topicHref":"Hi.HiNcKits.UserService.html","topicUid":"Hi.HiNcKits.UserService","type":"Class"}]},{"name":"Hi.Licenses","href":"Hi.Licenses.html","topicHref":"Hi.Licenses.html","topicUid":"Hi.Licenses","type":"Namespace","items":[{"name":"AuthFeature","href":"Hi.Licenses.AuthFeature.html","topicHref":"Hi.Licenses.AuthFeature.html","topicUid":"Hi.Licenses.AuthFeature","type":"Enum"},{"name":"AuthorizationFailedEventArgs","href":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicHref":"Hi.Licenses.AuthorizationFailedEventArgs.html","topicUid":"Hi.Licenses.AuthorizationFailedEventArgs","type":"Class"},{"name":"BlockType","href":"Hi.Licenses.BlockType.html","topicHref":"Hi.Licenses.BlockType.html","topicUid":"Hi.Licenses.BlockType","type":"Enum"},{"name":"License","href":"Hi.Licenses.License.html","topicHref":"Hi.Licenses.License.html","topicUid":"Hi.Licenses.License","type":"Class"},{"name":"LicenseType","href":"Hi.Licenses.LicenseType.html","topicHref":"Hi.Licenses.LicenseType.html","topicUid":"Hi.Licenses.LicenseType","type":"Enum"}]},{"name":"Hi.Machining","href":"Hi.Machining.html","topicHref":"Hi.Machining.html","topicUid":"Hi.Machining","type":"Namespace","items":[{"name":"FreeformRemover","href":"Hi.Machining.FreeformRemover.html","topicHref":"Hi.Machining.FreeformRemover.html","topicUid":"Hi.Machining.FreeformRemover","type":"Class"},{"name":"ICutter","href":"Hi.Machining.ICutter.html","topicHref":"Hi.Machining.ICutter.html","topicUid":"Hi.Machining.ICutter","type":"Interface"},{"name":"ICutterAnchorable","href":"Hi.Machining.ICutterAnchorable.html","topicHref":"Hi.Machining.ICutterAnchorable.html","topicUid":"Hi.Machining.ICutterAnchorable","type":"Interface"},{"name":"IGetSweptable","href":"Hi.Machining.IGetSweptable.html","topicHref":"Hi.Machining.IGetSweptable.html","topicUid":"Hi.Machining.IGetSweptable","type":"Interface"},{"name":"IMachiningTool","href":"Hi.Machining.IMachiningTool.html","topicHref":"Hi.Machining.IMachiningTool.html","topicUid":"Hi.Machining.IMachiningTool","type":"Interface"},{"name":"IVolumeRemover","href":"Hi.Machining.IVolumeRemover.html","topicHref":"Hi.Machining.IVolumeRemover.html","topicUid":"Hi.Machining.IVolumeRemover","type":"Interface"},{"name":"MachiningToolHouse","href":"Hi.Machining.MachiningToolHouse.html","topicHref":"Hi.Machining.MachiningToolHouse.html","topicUid":"Hi.Machining.MachiningToolHouse","type":"Class"},{"name":"MachiningVolumeRemovalProc","href":"Hi.Machining.MachiningVolumeRemovalProc.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc","type":"Class"},{"name":"MachiningVolumeRemovalProc.StepMotionSnapshot","href":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicHref":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html","topicUid":"Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot","type":"Class"},{"name":"MatInterpolationKit","href":"Hi.Machining.MatInterpolationKit.html","topicHref":"Hi.Machining.MatInterpolationKit.html","topicUid":"Hi.Machining.MatInterpolationKit","type":"Class"},{"name":"MatRelation","href":"Hi.Machining.MatRelation.html","topicHref":"Hi.Machining.MatRelation.html","topicUid":"Hi.Machining.MatRelation","type":"Enum"},{"name":"MatRelationUtil","href":"Hi.Machining.MatRelationUtil.html","topicHref":"Hi.Machining.MatRelationUtil.html","topicUid":"Hi.Machining.MatRelationUtil","type":"Class"},{"name":"Sweptable","href":"Hi.Machining.Sweptable.html","topicHref":"Hi.Machining.Sweptable.html","topicUid":"Hi.Machining.Sweptable","type":"Class"},{"name":"SweptableUtil","href":"Hi.Machining.SweptableUtil.html","topicHref":"Hi.Machining.SweptableUtil.html","topicUid":"Hi.Machining.SweptableUtil","type":"Class"},{"name":"ToolNotFoundException","href":"Hi.Machining.ToolNotFoundException.html","topicHref":"Hi.Machining.ToolNotFoundException.html","topicUid":"Hi.Machining.ToolNotFoundException","type":"Class"}]},{"name":"Hi.Machining.MachiningEquipmentUtils","href":"Hi.Machining.MachiningEquipmentUtils.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.html","topicUid":"Hi.Machining.MachiningEquipmentUtils","type":"Namespace","items":[{"name":"CollidableComponentEnum","href":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.CollidableComponentEnum","type":"Enum"},{"name":"IGetMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment","type":"Interface"},{"name":"IMachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment","type":"Interface"},{"name":"MachiningEquipment","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipment","type":"Class"},{"name":"MachiningEquipmentCollisionIndex","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex","type":"Class"},{"name":"MachiningEquipmentCollisionIndexPairsSource","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource","type":"Class"},{"name":"MachiningEquipmentUtil","href":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicHref":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html","topicUid":"Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil","type":"Class"}]},{"name":"Hi.MachiningProcs","href":"Hi.MachiningProcs.html","topicHref":"Hi.MachiningProcs.html","topicUid":"Hi.MachiningProcs","type":"Namespace","items":[{"name":"ConfigStepFunc","href":"Hi.MachiningProcs.ConfigStepFunc.html","topicHref":"Hi.MachiningProcs.ConfigStepFunc.html","topicUid":"Hi.MachiningProcs.ConfigStepFunc","type":"Delegate"},{"name":"IMachiningProjectGetter","href":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicHref":"Hi.MachiningProcs.IMachiningProjectGetter.html","topicUid":"Hi.MachiningProcs.IMachiningProjectGetter","type":"Interface"},{"name":"IProjectService","href":"Hi.MachiningProcs.IProjectService.html","topicHref":"Hi.MachiningProcs.IProjectService.html","topicUid":"Hi.MachiningProcs.IProjectService","type":"Interface"},{"name":"LocalProjectService","href":"Hi.MachiningProcs.LocalProjectService.html","topicHref":"Hi.MachiningProcs.LocalProjectService.html","topicUid":"Hi.MachiningProcs.LocalProjectService","type":"Class"},{"name":"LocalProjectService.MachiningProjectChangedDelegate","href":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicHref":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html","topicUid":"Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate","type":"Delegate"},{"name":"MachiningActRunner","href":"Hi.MachiningProcs.MachiningActRunner.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.html","topicUid":"Hi.MachiningProcs.MachiningActRunner","type":"Class"},{"name":"MachiningActRunner.MachiningStepBuiltDelegate","href":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicHref":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html","topicUid":"Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate","type":"Delegate"},{"name":"MachiningActRunnerConfig","href":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicHref":"Hi.MachiningProcs.MachiningActRunnerConfig.html","topicUid":"Hi.MachiningProcs.MachiningActRunnerConfig","type":"Class"},{"name":"MachiningParallelProc","href":"Hi.MachiningProcs.MachiningParallelProc.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc","type":"Class"},{"name":"MachiningParallelProc.StepTaskBundle","href":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle","type":"Class"},{"name":"MachiningParallelProc.SubstractionResult","href":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicHref":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult.html","topicUid":"Hi.MachiningProcs.MachiningParallelProc.SubstractionResult","type":"Class"},{"name":"MachiningProject","href":"Hi.MachiningProcs.MachiningProject.html","topicHref":"Hi.MachiningProcs.MachiningProject.html","topicUid":"Hi.MachiningProcs.MachiningProject","type":"Class"},{"name":"MachiningProjectDisplayee","href":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicHref":"Hi.MachiningProcs.MachiningProjectDisplayee.html","topicUid":"Hi.MachiningProcs.MachiningProjectDisplayee","type":"Class"},{"name":"MachiningSession","href":"Hi.MachiningProcs.MachiningSession.html","topicHref":"Hi.MachiningProcs.MachiningSession.html","topicUid":"Hi.MachiningProcs.MachiningSession","type":"Class"},{"name":"MillingUtil","href":"Hi.MachiningProcs.MillingUtil.html","topicHref":"Hi.MachiningProcs.MillingUtil.html","topicUid":"Hi.MachiningProcs.MillingUtil","type":"Class"},{"name":"NcRunnerSessionState","href":"Hi.MachiningProcs.NcRunnerSessionState.html","topicHref":"Hi.MachiningProcs.NcRunnerSessionState.html","topicUid":"Hi.MachiningProcs.NcRunnerSessionState","type":"Class"},{"name":"ProxyProjectService","href":"Hi.MachiningProcs.ProxyProjectService.html","topicHref":"Hi.MachiningProcs.ProxyProjectService.html","topicUid":"Hi.MachiningProcs.ProxyProjectService","type":"Class"},{"name":"RenderingFlag","href":"Hi.MachiningProcs.RenderingFlag.html","topicHref":"Hi.MachiningProcs.RenderingFlag.html","topicUid":"Hi.MachiningProcs.RenderingFlag","type":"Enum"},{"name":"SessionMessage","href":"Hi.MachiningProcs.SessionMessage.html","topicHref":"Hi.MachiningProcs.SessionMessage.html","topicUid":"Hi.MachiningProcs.SessionMessage","type":"Class"},{"name":"SessionMessagePack","href":"Hi.MachiningProcs.SessionMessagePack.html","topicHref":"Hi.MachiningProcs.SessionMessagePack.html","topicUid":"Hi.MachiningProcs.SessionMessagePack","type":"Class"},{"name":"SessionProgress","href":"Hi.MachiningProcs.SessionProgress.html","topicHref":"Hi.MachiningProcs.SessionProgress.html","topicUid":"Hi.MachiningProcs.SessionProgress","type":"Class"},{"name":"SessionProgress.FilterFlag","href":"Hi.MachiningProcs.SessionProgress.FilterFlag.html","topicHref":"Hi.MachiningProcs.SessionProgress.FilterFlag.html","topicUid":"Hi.MachiningProcs.SessionProgress.FilterFlag","type":"Enum"},{"name":"SessionShell","href":"Hi.MachiningProcs.SessionShell.html","topicHref":"Hi.MachiningProcs.SessionShell.html","topicUid":"Hi.MachiningProcs.SessionShell","type":"Class"},{"name":"SessionShellController","href":"Hi.MachiningProcs.SessionShellController.html","topicHref":"Hi.MachiningProcs.SessionShellController.html","topicUid":"Hi.MachiningProcs.SessionShellController","type":"Class"},{"name":"SetupController","href":"Hi.MachiningProcs.SetupController.html","topicHref":"Hi.MachiningProcs.SetupController.html","topicUid":"Hi.MachiningProcs.SetupController","type":"Class"},{"name":"SpindleSpeedCache","href":"Hi.MachiningProcs.SpindleSpeedCache.html","topicHref":"Hi.MachiningProcs.SpindleSpeedCache.html","topicUid":"Hi.MachiningProcs.SpindleSpeedCache","type":"Class"}]},{"name":"Hi.MachiningSteps","href":"Hi.MachiningSteps.html","topicHref":"Hi.MachiningSteps.html","topicUid":"Hi.MachiningSteps","type":"Namespace","items":[{"name":"IFlagText","href":"Hi.MachiningSteps.IFlagText.html","topicHref":"Hi.MachiningSteps.IFlagText.html","topicUid":"Hi.MachiningSteps.IFlagText","type":"Interface"},{"name":"IMachiningService","href":"Hi.MachiningSteps.IMachiningService.html","topicHref":"Hi.MachiningSteps.IMachiningService.html","topicUid":"Hi.MachiningSteps.IMachiningService","type":"Interface"},{"name":"MachineMotionStep","href":"Hi.MachiningSteps.MachineMotionStep.html","topicHref":"Hi.MachiningSteps.MachineMotionStep.html","topicUid":"Hi.MachiningSteps.MachineMotionStep","type":"Class"},{"name":"MachiningStep","href":"Hi.MachiningSteps.MachiningStep.html","topicHref":"Hi.MachiningSteps.MachiningStep.html","topicUid":"Hi.MachiningSteps.MachiningStep","type":"Class"},{"name":"MachiningStep.CollidedKeyPair","href":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicHref":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html","topicUid":"Hi.MachiningSteps.MachiningStep.CollidedKeyPair","type":"Class"},{"name":"MachiningStepUtil","href":"Hi.MachiningSteps.MachiningStepUtil.html","topicHref":"Hi.MachiningSteps.MachiningStepUtil.html","topicUid":"Hi.MachiningSteps.MachiningStepUtil","type":"Class"},{"name":"PresentAccess","href":"Hi.MachiningSteps.PresentAccess.html","topicHref":"Hi.MachiningSteps.PresentAccess.html","topicUid":"Hi.MachiningSteps.PresentAccess","type":"Class"},{"name":"PresentAttribute","href":"Hi.MachiningSteps.PresentAttribute.html","topicHref":"Hi.MachiningSteps.PresentAttribute.html","topicUid":"Hi.MachiningSteps.PresentAttribute","type":"Class"},{"name":"PropertyAccess","href":"Hi.MachiningSteps.PropertyAccess-1.html","topicHref":"Hi.MachiningSteps.PropertyAccess-1.html","topicUid":"Hi.MachiningSteps.PropertyAccess`1","type":"Class"}]},{"name":"Hi.Mapping","href":"Hi.Mapping.html","topicHref":"Hi.Mapping.html","topicUid":"Hi.Mapping","type":"Namespace","items":[{"name":"CsvNcStep","href":"Hi.Mapping.CsvNcStep.html","topicHref":"Hi.Mapping.CsvNcStep.html","topicUid":"Hi.Mapping.CsvNcStep","type":"Class"},{"name":"FileToTimeShotMapping","href":"Hi.Mapping.FileToTimeShotMapping.html","topicHref":"Hi.Mapping.FileToTimeShotMapping.html","topicUid":"Hi.Mapping.FileToTimeShotMapping","type":"Class"},{"name":"IAccelerationShot","href":"Hi.Mapping.IAccelerationShot.html","topicHref":"Hi.Mapping.IAccelerationShot.html","topicUid":"Hi.Mapping.IAccelerationShot","type":"Interface"},{"name":"IForceShot","href":"Hi.Mapping.IForceShot.html","topicHref":"Hi.Mapping.IForceShot.html","topicUid":"Hi.Mapping.IForceShot","type":"Interface"},{"name":"IMomentShot","href":"Hi.Mapping.IMomentShot.html","topicHref":"Hi.Mapping.IMomentShot.html","topicUid":"Hi.Mapping.IMomentShot","type":"Interface"},{"name":"ITimeShot","href":"Hi.Mapping.ITimeShot.html","topicHref":"Hi.Mapping.ITimeShot.html","topicUid":"Hi.Mapping.ITimeShot","type":"Interface"},{"name":"MappingUtil","href":"Hi.Mapping.MappingUtil.html","topicHref":"Hi.Mapping.MappingUtil.html","topicUid":"Hi.Mapping.MappingUtil","type":"Class"},{"name":"StepTimeShotUtil","href":"Hi.Mapping.StepTimeShotUtil.html","topicHref":"Hi.Mapping.StepTimeShotUtil.html","topicUid":"Hi.Mapping.StepTimeShotUtil","type":"Class"},{"name":"StepTimeShotUtil.CycleSamplingMode","href":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicHref":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html","topicUid":"Hi.Mapping.StepTimeShotUtil.CycleSamplingMode","type":"Enum"},{"name":"StepTimeShotUtil.GetTimeShotByFileDelegate","href":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicHref":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate.html","topicUid":"Hi.Mapping.StepTimeShotUtil.GetTimeShotByFileDelegate","type":"Delegate"},{"name":"TimeMapping","href":"Hi.Mapping.TimeMapping.html","topicHref":"Hi.Mapping.TimeMapping.html","topicUid":"Hi.Mapping.TimeMapping","type":"Class"}]},{"name":"Hi.Mappings","href":"Hi.Mappings.html","topicHref":"Hi.Mappings.html","topicUid":"Hi.Mappings","type":"Namespace","items":[{"name":"FileTimeSection","href":"Hi.Mappings.FileTimeSection.html","topicHref":"Hi.Mappings.FileTimeSection.html","topicUid":"Hi.Mappings.FileTimeSection","type":"Class"},{"name":"FileTimeSection.TimeOption","href":"Hi.Mappings.FileTimeSection.TimeOption.html","topicHref":"Hi.Mappings.FileTimeSection.TimeOption.html","topicUid":"Hi.Mappings.FileTimeSection.TimeOption","type":"Enum"}]},{"name":"Hi.Mech","href":"Hi.Mech.html","topicHref":"Hi.Mech.html","topicUid":"Hi.Mech","type":"Namespace","items":[{"name":"GeneralMechanism","href":"Hi.Mech.GeneralMechanism.html","topicHref":"Hi.Mech.GeneralMechanism.html","topicUid":"Hi.Mech.GeneralMechanism","type":"Class"},{"name":"IGetAnchorToSolidDictionary","href":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicHref":"Hi.Mech.IGetAnchorToSolidDictionary.html","topicUid":"Hi.Mech.IGetAnchorToSolidDictionary","type":"Interface"},{"name":"IGetMachiningChain","href":"Hi.Mech.IGetMachiningChain.html","topicHref":"Hi.Mech.IGetMachiningChain.html","topicUid":"Hi.Mech.IGetMachiningChain","type":"Interface"},{"name":"IMachiningChain","href":"Hi.Mech.IMachiningChain.html","topicHref":"Hi.Mech.IMachiningChain.html","topicUid":"Hi.Mech.IMachiningChain","type":"Interface"},{"name":"IMachiningChainSource","href":"Hi.Mech.IMachiningChainSource.html","topicHref":"Hi.Mech.IMachiningChainSource.html","topicUid":"Hi.Mech.IMachiningChainSource","type":"Interface"},{"name":"MachiningChainUtil","href":"Hi.Mech.MachiningChainUtil.html","topicHref":"Hi.Mech.MachiningChainUtil.html","topicUid":"Hi.Mech.MachiningChainUtil","type":"Class"}]},{"name":"Hi.Mech.Topo","href":"Hi.Mech.Topo.html","topicHref":"Hi.Mech.Topo.html","topicUid":"Hi.Mech.Topo","type":"Namespace","items":[{"name":"Anchor","href":"Hi.Mech.Topo.Anchor.html","topicHref":"Hi.Mech.Topo.Anchor.html","topicUid":"Hi.Mech.Topo.Anchor","type":"Class"},{"name":"AnchorFuncSource","href":"Hi.Mech.Topo.AnchorFuncSource.html","topicHref":"Hi.Mech.Topo.AnchorFuncSource.html","topicUid":"Hi.Mech.Topo.AnchorFuncSource","type":"Class"},{"name":"AnchoredBoxable","href":"Hi.Mech.Topo.AnchoredBoxable.html","topicHref":"Hi.Mech.Topo.AnchoredBoxable.html","topicUid":"Hi.Mech.Topo.AnchoredBoxable","type":"Class"},{"name":"AnchoredDisplayee","href":"Hi.Mech.Topo.AnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.AnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.AnchoredDisplayee","type":"Class"},{"name":"Asmb","href":"Hi.Mech.Topo.Asmb.html","topicHref":"Hi.Mech.Topo.Asmb.html","topicUid":"Hi.Mech.Topo.Asmb","type":"Class"},{"name":"AsmbDraw","href":"Hi.Mech.Topo.AsmbDraw.html","topicHref":"Hi.Mech.Topo.AsmbDraw.html","topicUid":"Hi.Mech.Topo.AsmbDraw","type":"Class"},{"name":"Branch","href":"Hi.Mech.Topo.Branch.html","topicHref":"Hi.Mech.Topo.Branch.html","topicUid":"Hi.Mech.Topo.Branch","type":"Class"},{"name":"DirectionBranchEntry","href":"Hi.Mech.Topo.DirectionBranchEntry.html","topicHref":"Hi.Mech.Topo.DirectionBranchEntry.html","topicUid":"Hi.Mech.Topo.DirectionBranchEntry","type":"Class"},{"name":"DirectionBranchPackUtil","href":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicHref":"Hi.Mech.Topo.DirectionBranchPackUtil.html","topicUid":"Hi.Mech.Topo.DirectionBranchPackUtil","type":"Class"},{"name":"DynamicFreeform","href":"Hi.Mech.Topo.DynamicFreeform.html","topicHref":"Hi.Mech.Topo.DynamicFreeform.html","topicUid":"Hi.Mech.Topo.DynamicFreeform","type":"Class"},{"name":"DynamicRotation","href":"Hi.Mech.Topo.DynamicRotation.html","topicHref":"Hi.Mech.Topo.DynamicRotation.html","topicUid":"Hi.Mech.Topo.DynamicRotation","type":"Class"},{"name":"DynamicTranslation","href":"Hi.Mech.Topo.DynamicTranslation.html","topicHref":"Hi.Mech.Topo.DynamicTranslation.html","topicUid":"Hi.Mech.Topo.DynamicTranslation","type":"Class"},{"name":"GeneralTransform","href":"Hi.Mech.Topo.GeneralTransform.html","topicHref":"Hi.Mech.Topo.GeneralTransform.html","topicUid":"Hi.Mech.Topo.GeneralTransform","type":"Class"},{"name":"IAnchoredDisplayee","href":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicHref":"Hi.Mech.Topo.IAnchoredDisplayee.html","topicUid":"Hi.Mech.Topo.IAnchoredDisplayee","type":"Interface"},{"name":"IDynamicRegular","href":"Hi.Mech.Topo.IDynamicRegular.html","topicHref":"Hi.Mech.Topo.IDynamicRegular.html","topicUid":"Hi.Mech.Topo.IDynamicRegular","type":"Interface"},{"name":"IDynamicRotation","href":"Hi.Mech.Topo.IDynamicRotation.html","topicHref":"Hi.Mech.Topo.IDynamicRotation.html","topicUid":"Hi.Mech.Topo.IDynamicRotation","type":"Interface"},{"name":"IDynamicTransformer","href":"Hi.Mech.Topo.IDynamicTransformer.html","topicHref":"Hi.Mech.Topo.IDynamicTransformer.html","topicUid":"Hi.Mech.Topo.IDynamicTransformer","type":"Interface"},{"name":"IGetAnchor","href":"Hi.Mech.Topo.IGetAnchor.html","topicHref":"Hi.Mech.Topo.IGetAnchor.html","topicUid":"Hi.Mech.Topo.IGetAnchor","type":"Interface"},{"name":"IGetAnchoredDisplayeeList","href":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicHref":"Hi.Mech.Topo.IGetAnchoredDisplayeeList.html","topicUid":"Hi.Mech.Topo.IGetAnchoredDisplayeeList","type":"Interface"},{"name":"IGetAsmb","href":"Hi.Mech.Topo.IGetAsmb.html","topicHref":"Hi.Mech.Topo.IGetAsmb.html","topicUid":"Hi.Mech.Topo.IGetAsmb","type":"Interface"},{"name":"IGetFletchBuckle","href":"Hi.Mech.Topo.IGetFletchBuckle.html","topicHref":"Hi.Mech.Topo.IGetFletchBuckle.html","topicUid":"Hi.Mech.Topo.IGetFletchBuckle","type":"Interface"},{"name":"IGetInverseTransformer","href":"Hi.Mech.Topo.IGetInverseTransformer.html","topicHref":"Hi.Mech.Topo.IGetInverseTransformer.html","topicUid":"Hi.Mech.Topo.IGetInverseTransformer","type":"Interface"},{"name":"IGetTopoIndex","href":"Hi.Mech.Topo.IGetTopoIndex.html","topicHref":"Hi.Mech.Topo.IGetTopoIndex.html","topicUid":"Hi.Mech.Topo.IGetTopoIndex","type":"Interface"},{"name":"IStaticTransformer","href":"Hi.Mech.Topo.IStaticTransformer.html","topicHref":"Hi.Mech.Topo.IStaticTransformer.html","topicUid":"Hi.Mech.Topo.IStaticTransformer","type":"Interface"},{"name":"ITopo","href":"Hi.Mech.Topo.ITopo.html","topicHref":"Hi.Mech.Topo.ITopo.html","topicUid":"Hi.Mech.Topo.ITopo","type":"Interface"},{"name":"ITopoDisplayee","href":"Hi.Mech.Topo.ITopoDisplayee.html","topicHref":"Hi.Mech.Topo.ITopoDisplayee.html","topicUid":"Hi.Mech.Topo.ITopoDisplayee","type":"Interface"},{"name":"ITransformer","href":"Hi.Mech.Topo.ITransformer.html","topicHref":"Hi.Mech.Topo.ITransformer.html","topicUid":"Hi.Mech.Topo.ITransformer","type":"Interface"},{"name":"ITransformerProperty","href":"Hi.Mech.Topo.ITransformerProperty.html","topicHref":"Hi.Mech.Topo.ITransformerProperty.html","topicUid":"Hi.Mech.Topo.ITransformerProperty","type":"Interface"},{"name":"NoTransform","href":"Hi.Mech.Topo.NoTransform.html","topicHref":"Hi.Mech.Topo.NoTransform.html","topicUid":"Hi.Mech.Topo.NoTransform","type":"Class"},{"name":"StackTransformer","href":"Hi.Mech.Topo.StackTransformer.html","topicHref":"Hi.Mech.Topo.StackTransformer.html","topicUid":"Hi.Mech.Topo.StackTransformer","type":"Class"},{"name":"StaticFreeform","href":"Hi.Mech.Topo.StaticFreeform.html","topicHref":"Hi.Mech.Topo.StaticFreeform.html","topicUid":"Hi.Mech.Topo.StaticFreeform","type":"Class"},{"name":"StaticRotation","href":"Hi.Mech.Topo.StaticRotation.html","topicHref":"Hi.Mech.Topo.StaticRotation.html","topicUid":"Hi.Mech.Topo.StaticRotation","type":"Class"},{"name":"StaticTranslation","href":"Hi.Mech.Topo.StaticTranslation.html","topicHref":"Hi.Mech.Topo.StaticTranslation.html","topicUid":"Hi.Mech.Topo.StaticTranslation","type":"Class"},{"name":"TopoDisplayee","href":"Hi.Mech.Topo.TopoDisplayee.html","topicHref":"Hi.Mech.Topo.TopoDisplayee.html","topicUid":"Hi.Mech.Topo.TopoDisplayee","type":"Class"},{"name":"TopoDisplayeeUtil","href":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicHref":"Hi.Mech.Topo.TopoDisplayeeUtil.html","topicUid":"Hi.Mech.Topo.TopoDisplayeeUtil","type":"Class"},{"name":"TopoReflection","href":"Hi.Mech.Topo.TopoReflection.html","topicHref":"Hi.Mech.Topo.TopoReflection.html","topicUid":"Hi.Mech.Topo.TopoReflection","type":"Class"},{"name":"TopoUtil","href":"Hi.Mech.Topo.TopoUtil.html","topicHref":"Hi.Mech.Topo.TopoUtil.html","topicUid":"Hi.Mech.Topo.TopoUtil","type":"Class"},{"name":"TransformerUtil","href":"Hi.Mech.Topo.TransformerUtil.html","topicHref":"Hi.Mech.Topo.TransformerUtil.html","topicUid":"Hi.Mech.Topo.TransformerUtil","type":"Class"}]},{"name":"Hi.Milling","href":"Hi.Milling.html","topicHref":"Hi.Milling.html","topicUid":"Hi.Milling","type":"Namespace","items":[{"name":"IGetDiameter","href":"Hi.Milling.IGetDiameter.html","topicHref":"Hi.Milling.IGetDiameter.html","topicUid":"Hi.Milling.IGetDiameter","type":"Interface"},{"name":"IGetFluteHeight","href":"Hi.Milling.IGetFluteHeight.html","topicHref":"Hi.Milling.IGetFluteHeight.html","topicUid":"Hi.Milling.IGetFluteHeight","type":"Interface"},{"name":"IGetMillingGeomBrief","href":"Hi.Milling.IGetMillingGeomBrief.html","topicHref":"Hi.Milling.IGetMillingGeomBrief.html","topicUid":"Hi.Milling.IGetMillingGeomBrief","type":"Interface"},{"name":"IGetRadialReliefAngle","href":"Hi.Milling.IGetRadialReliefAngle.html","topicHref":"Hi.Milling.IGetRadialReliefAngle.html","topicUid":"Hi.Milling.IGetRadialReliefAngle","type":"Interface"},{"name":"IMillingGeomBriefAccessor","href":"Hi.Milling.IMillingGeomBriefAccessor.html","topicHref":"Hi.Milling.IMillingGeomBriefAccessor.html","topicUid":"Hi.Milling.IMillingGeomBriefAccessor","type":"Interface"},{"name":"MillingGeomBrief","href":"Hi.Milling.MillingGeomBrief.html","topicHref":"Hi.Milling.MillingGeomBrief.html","topicUid":"Hi.Milling.MillingGeomBrief","type":"Class"},{"name":"MillingRemovalUtil","href":"Hi.Milling.MillingRemovalUtil.html","topicHref":"Hi.Milling.MillingRemovalUtil.html","topicUid":"Hi.Milling.MillingRemovalUtil","type":"Class"},{"name":"SpindleCapability","href":"Hi.Milling.SpindleCapability.html","topicHref":"Hi.Milling.SpindleCapability.html","topicUid":"Hi.Milling.SpindleCapability","type":"Class"}]},{"name":"Hi.Milling.Apts","href":"Hi.Milling.Apts.html","topicHref":"Hi.Milling.Apts.html","topicUid":"Hi.Milling.Apts","type":"Namespace","items":[{"name":"AptDerivative","href":"Hi.Milling.Apts.AptDerivative.html","topicHref":"Hi.Milling.Apts.AptDerivative.html","topicUid":"Hi.Milling.Apts.AptDerivative","type":"Class"},{"name":"BallApt","href":"Hi.Milling.Apts.BallApt.html","topicHref":"Hi.Milling.Apts.BallApt.html","topicUid":"Hi.Milling.Apts.BallApt","type":"Class"},{"name":"BullNoseApt","href":"Hi.Milling.Apts.BullNoseApt.html","topicHref":"Hi.Milling.Apts.BullNoseApt.html","topicUid":"Hi.Milling.Apts.BullNoseApt","type":"Class"},{"name":"ColumnApt","href":"Hi.Milling.Apts.ColumnApt.html","topicHref":"Hi.Milling.Apts.ColumnApt.html","topicUid":"Hi.Milling.Apts.ColumnApt","type":"Class"},{"name":"ConeApt","href":"Hi.Milling.Apts.ConeApt.html","topicHref":"Hi.Milling.Apts.ConeApt.html","topicUid":"Hi.Milling.Apts.ConeApt","type":"Class"},{"name":"ExactColumnApt","href":"Hi.Milling.Apts.ExactColumnApt.html","topicHref":"Hi.Milling.Apts.ExactColumnApt.html","topicUid":"Hi.Milling.Apts.ExactColumnApt","type":"Class"},{"name":"GeneralApt","href":"Hi.Milling.Apts.GeneralApt.html","topicHref":"Hi.Milling.Apts.GeneralApt.html","topicUid":"Hi.Milling.Apts.GeneralApt","type":"Class"},{"name":"IAptAlpha","href":"Hi.Milling.Apts.IAptAlpha.html","topicHref":"Hi.Milling.Apts.IAptAlpha.html","topicUid":"Hi.Milling.Apts.IAptAlpha","type":"Interface"},{"name":"IAptBased","href":"Hi.Milling.Apts.IAptBased.html","topicHref":"Hi.Milling.Apts.IAptBased.html","topicUid":"Hi.Milling.Apts.IAptBased","type":"Interface"},{"name":"IAptBeta","href":"Hi.Milling.Apts.IAptBeta.html","topicHref":"Hi.Milling.Apts.IAptBeta.html","topicUid":"Hi.Milling.Apts.IAptBeta","type":"Interface"},{"name":"IAptRc","href":"Hi.Milling.Apts.IAptRc.html","topicHref":"Hi.Milling.Apts.IAptRc.html","topicUid":"Hi.Milling.Apts.IAptRc","type":"Interface"},{"name":"IAptRr","href":"Hi.Milling.Apts.IAptRr.html","topicHref":"Hi.Milling.Apts.IAptRr.html","topicUid":"Hi.Milling.Apts.IAptRr","type":"Interface"},{"name":"IAptRz","href":"Hi.Milling.Apts.IAptRz.html","topicHref":"Hi.Milling.Apts.IAptRz.html","topicUid":"Hi.Milling.Apts.IAptRz","type":"Interface"},{"name":"IGetApt","href":"Hi.Milling.Apts.IGetApt.html","topicHref":"Hi.Milling.Apts.IGetApt.html","topicUid":"Hi.Milling.Apts.IGetApt","type":"Interface"},{"name":"IGetGeneralApt","href":"Hi.Milling.Apts.IGetGeneralApt.html","topicHref":"Hi.Milling.Apts.IGetGeneralApt.html","topicUid":"Hi.Milling.Apts.IGetGeneralApt","type":"Interface"},{"name":"TaperApt","href":"Hi.Milling.Apts.TaperApt.html","topicHref":"Hi.Milling.Apts.TaperApt.html","topicUid":"Hi.Milling.Apts.TaperApt","type":"Class"},{"name":"apt_t","href":"Hi.Milling.Apts.apt_t.html","topicHref":"Hi.Milling.Apts.apt_t.html","topicUid":"Hi.Milling.Apts.apt_t","type":"Struct"}]},{"name":"Hi.Milling.Cutters","href":"Hi.Milling.Cutters.html","topicHref":"Hi.Milling.Cutters.html","topicUid":"Hi.Milling.Cutters","type":"Namespace","items":[{"name":"AptProfile","href":"Hi.Milling.Cutters.AptProfile.html","topicHref":"Hi.Milling.Cutters.AptProfile.html","topicUid":"Hi.Milling.Cutters.AptProfile","type":"Class"},{"name":"ConstRatioProfile","href":"Hi.Milling.Cutters.ConstRatioProfile.html","topicHref":"Hi.Milling.Cutters.ConstRatioProfile.html","topicUid":"Hi.Milling.Cutters.ConstRatioProfile","type":"Class"},{"name":"CustomSpinningProfile","href":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicHref":"Hi.Milling.Cutters.CustomSpinningProfile.html","topicUid":"Hi.Milling.Cutters.CustomSpinningProfile","type":"Class"},{"name":"CutterUtil","href":"Hi.Milling.Cutters.CutterUtil.html","topicHref":"Hi.Milling.Cutters.CutterUtil.html","topicUid":"Hi.Milling.Cutters.CutterUtil","type":"Class"},{"name":"FluteContourDisplayee","href":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicHref":"Hi.Milling.Cutters.FluteContourDisplayee.html","topicUid":"Hi.Milling.Cutters.FluteContourDisplayee","type":"Class"},{"name":"FluteDependentRatioProfile","href":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicHref":"Hi.Milling.Cutters.FluteDependentRatioProfile.html","topicUid":"Hi.Milling.Cutters.FluteDependentRatioProfile","type":"Class"},{"name":"IShaperProfile","href":"Hi.Milling.Cutters.IShaperProfile.html","topicHref":"Hi.Milling.Cutters.IShaperProfile.html","topicUid":"Hi.Milling.Cutters.IShaperProfile","type":"Interface"},{"name":"MillingCutter","href":"Hi.Milling.Cutters.MillingCutter.html","topicHref":"Hi.Milling.Cutters.MillingCutter.html","topicUid":"Hi.Milling.Cutters.MillingCutter","type":"Class"},{"name":"MillingCutter.IntegralModeEnum","href":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutter.IntegralModeEnum","type":"Enum"},{"name":"MillingCutter.MassAssignmentMode","href":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicHref":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode.html","topicUid":"Hi.Milling.Cutters.MillingCutter.MassAssignmentMode","type":"Enum"},{"name":"MillingCutterEditorDisplayee","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee","type":"Class"},{"name":"MillingCutterEditorDisplayee.ShapeModeEnum","href":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicHref":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html","topicUid":"Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum","type":"Enum"}]},{"name":"Hi.Milling.Engagements","href":"Hi.Milling.Engagements.html","topicHref":"Hi.Milling.Engagements.html","topicUid":"Hi.Milling.Engagements","type":"Namespace","items":[{"name":"BitwiseMillingEngagement","href":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicHref":"Hi.Milling.Engagements.BitwiseMillingEngagement.html","topicUid":"Hi.Milling.Engagements.BitwiseMillingEngagement","type":"Class"},{"name":"EngagementLayer","href":"Hi.Milling.Engagements.EngagementLayer.html","topicHref":"Hi.Milling.Engagements.EngagementLayer.html","topicUid":"Hi.Milling.Engagements.EngagementLayer","type":"Class"},{"name":"EngagementSlice","href":"Hi.Milling.Engagements.EngagementSlice.html","topicHref":"Hi.Milling.Engagements.EngagementSlice.html","topicUid":"Hi.Milling.Engagements.EngagementSlice","type":"Class"},{"name":"IBitwiseMillingEngagementSupport","href":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicHref":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport.html","topicUid":"Hi.Milling.Engagements.IBitwiseMillingEngagementSupport","type":"Interface"},{"name":"IGetLayerMillingEngagement","href":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.IGetLayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.IGetLayerMillingEngagement","type":"Interface"},{"name":"LayerMillingEngagement","href":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicHref":"Hi.Milling.Engagements.LayerMillingEngagement.html","topicUid":"Hi.Milling.Engagements.LayerMillingEngagement","type":"Class"},{"name":"MillingEngagementUtil","href":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicHref":"Hi.Milling.Engagements.MillingEngagementUtil.html","topicUid":"Hi.Milling.Engagements.MillingEngagementUtil","type":"Class"}]},{"name":"Hi.Milling.FluteContours","href":"Hi.Milling.FluteContours.html","topicHref":"Hi.Milling.FluteContours.html","topicUid":"Hi.Milling.FluteContours","type":"Namespace","items":[{"name":"ConstHelixSideContour","href":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicHref":"Hi.Milling.FluteContours.ConstHelixSideContour.html","topicUid":"Hi.Milling.FluteContours.ConstHelixSideContour","type":"Class"},{"name":"FluteContour","href":"Hi.Milling.FluteContours.FluteContour.html","topicHref":"Hi.Milling.FluteContours.FluteContour.html","topicUid":"Hi.Milling.FluteContours.FluteContour","type":"Class"},{"name":"FluteContourUtil","href":"Hi.Milling.FluteContours.FluteContourUtil.html","topicHref":"Hi.Milling.FluteContours.FluteContourUtil.html","topicUid":"Hi.Milling.FluteContours.FluteContourUtil","type":"Class"},{"name":"FreeContourTray","href":"Hi.Milling.FluteContours.FreeContourTray.html","topicHref":"Hi.Milling.FluteContours.FreeContourTray.html","topicUid":"Hi.Milling.FluteContours.FreeContourTray","type":"Class"},{"name":"FreeformSideContour","href":"Hi.Milling.FluteContours.FreeformSideContour.html","topicHref":"Hi.Milling.FluteContours.FreeformSideContour.html","topicUid":"Hi.Milling.FluteContours.FreeformSideContour","type":"Class"},{"name":"IBottomContour","href":"Hi.Milling.FluteContours.IBottomContour.html","topicHref":"Hi.Milling.FluteContours.IBottomContour.html","topicUid":"Hi.Milling.FluteContours.IBottomContour","type":"Interface"},{"name":"IContourTray","href":"Hi.Milling.FluteContours.IContourTray.html","topicHref":"Hi.Milling.FluteContours.IContourTray.html","topicUid":"Hi.Milling.FluteContours.IContourTray","type":"Interface"},{"name":"IFluteNumSourceProperty","href":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicHref":"Hi.Milling.FluteContours.IFluteNumSourceProperty.html","topicUid":"Hi.Milling.FluteContours.IFluteNumSourceProperty","type":"Interface"},{"name":"IGetFluteNum","href":"Hi.Milling.FluteContours.IGetFluteNum.html","topicHref":"Hi.Milling.FluteContours.IGetFluteNum.html","topicUid":"Hi.Milling.FluteContours.IGetFluteNum","type":"Interface"},{"name":"ISideContour","href":"Hi.Milling.FluteContours.ISideContour.html","topicHref":"Hi.Milling.FluteContours.ISideContour.html","topicUid":"Hi.Milling.FluteContours.ISideContour","type":"Interface"},{"name":"IWorkingContour","href":"Hi.Milling.FluteContours.IWorkingContour.html","topicHref":"Hi.Milling.FluteContours.IWorkingContour.html","topicUid":"Hi.Milling.FluteContours.IWorkingContour","type":"Interface"},{"name":"ShiftedWorkingContour","href":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicHref":"Hi.Milling.FluteContours.ShiftedWorkingContour.html","topicUid":"Hi.Milling.FluteContours.ShiftedWorkingContour","type":"Class"},{"name":"SideContourDisplayee","href":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicHref":"Hi.Milling.FluteContours.SideContourDisplayee.html","topicUid":"Hi.Milling.FluteContours.SideContourDisplayee","type":"Class"},{"name":"SlideBottomContour","href":"Hi.Milling.FluteContours.SlideBottomContour.html","topicHref":"Hi.Milling.FluteContours.SlideBottomContour.html","topicUid":"Hi.Milling.FluteContours.SlideBottomContour","type":"Class"},{"name":"SpanContourPos4d","href":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicHref":"Hi.Milling.FluteContours.SpanContourPos4d.html","topicUid":"Hi.Milling.FluteContours.SpanContourPos4d","type":"Class"},{"name":"UniformContourTray","href":"Hi.Milling.FluteContours.UniformContourTray.html","topicHref":"Hi.Milling.FluteContours.UniformContourTray.html","topicUid":"Hi.Milling.FluteContours.UniformContourTray","type":"Class"}]},{"name":"Hi.Milling.MillingTools","href":"Hi.Milling.MillingTools.html","topicHref":"Hi.Milling.MillingTools.html","topicUid":"Hi.Milling.MillingTools","type":"Namespace","items":[{"name":"MillingTool","href":"Hi.Milling.MillingTools.MillingTool.html","topicHref":"Hi.Milling.MillingTools.MillingTool.html","topicUid":"Hi.Milling.MillingTools.MillingTool","type":"Class"},{"name":"MillingToolAnchorReference","href":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicHref":"Hi.Milling.MillingTools.MillingToolAnchorReference.html","topicUid":"Hi.Milling.MillingTools.MillingToolAnchorReference","type":"Enum"},{"name":"MillingToolEditorDisplayee","href":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicHref":"Hi.Milling.MillingTools.MillingToolEditorDisplayee.html","topicUid":"Hi.Milling.MillingTools.MillingToolEditorDisplayee","type":"Class"},{"name":"MillingToolUtil","href":"Hi.Milling.MillingTools.MillingToolUtil.html","topicHref":"Hi.Milling.MillingTools.MillingToolUtil.html","topicUid":"Hi.Milling.MillingTools.MillingToolUtil","type":"Class"}]},{"name":"Hi.MillingForces","href":"Hi.MillingForces.html","topicHref":"Hi.MillingForces.html","topicUid":"Hi.MillingForces","type":"Namespace","items":[{"name":"FluteZData","href":"Hi.MillingForces.FluteZData.html","topicHref":"Hi.MillingForces.FluteZData.html","topicUid":"Hi.MillingForces.FluteZData","type":"Class"},{"name":"IGetMillingForce","href":"Hi.MillingForces.IGetMillingForce.html","topicHref":"Hi.MillingForces.IGetMillingForce.html","topicUid":"Hi.MillingForces.IGetMillingForce","type":"Interface"},{"name":"IMillingForceAccessor","href":"Hi.MillingForces.IMillingForceAccessor.html","topicHref":"Hi.MillingForces.IMillingForceAccessor.html","topicUid":"Hi.MillingForces.IMillingForceAccessor","type":"Interface"},{"name":"MillingForce","href":"Hi.MillingForces.MillingForce.html","topicHref":"Hi.MillingForces.MillingForce.html","topicUid":"Hi.MillingForces.MillingForce","type":"Class"},{"name":"MillingForceLicense","href":"Hi.MillingForces.MillingForceLicense.html","topicHref":"Hi.MillingForces.MillingForceLicense.html","topicUid":"Hi.MillingForces.MillingForceLicense","type":"Class"},{"name":"MillingForceLuggage","href":"Hi.MillingForces.MillingForceLuggage.html","topicHref":"Hi.MillingForces.MillingForceLuggage.html","topicUid":"Hi.MillingForces.MillingForceLuggage","type":"Class"},{"name":"MillingForceUtil","href":"Hi.MillingForces.MillingForceUtil.html","topicHref":"Hi.MillingForces.MillingForceUtil.html","topicUid":"Hi.MillingForces.MillingForceUtil","type":"Class"},{"name":"MillingForceUtil.AnglePack","href":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicHref":"Hi.MillingForces.MillingForceUtil.AnglePack.html","topicUid":"Hi.MillingForces.MillingForceUtil.AnglePack","type":"Class"},{"name":"MillingPhysicsBrief","href":"Hi.MillingForces.MillingPhysicsBrief.html","topicHref":"Hi.MillingForces.MillingPhysicsBrief.html","topicUid":"Hi.MillingForces.MillingPhysicsBrief","type":"Class"},{"name":"PhysicsUtil","href":"Hi.MillingForces.PhysicsUtil.html","topicHref":"Hi.MillingForces.PhysicsUtil.html","topicUid":"Hi.MillingForces.PhysicsUtil","type":"Class"},{"name":"ToolObservationReference","href":"Hi.MillingForces.ToolObservationReference.html","topicHref":"Hi.MillingForces.ToolObservationReference.html","topicUid":"Hi.MillingForces.ToolObservationReference","type":"Enum"}]},{"name":"Hi.MillingForces.Fittings","href":"Hi.MillingForces.Fittings.html","topicHref":"Hi.MillingForces.Fittings.html","topicUid":"Hi.MillingForces.Fittings","type":"Namespace","items":[{"name":"CuttingParaUtil","href":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicHref":"Hi.MillingForces.Fittings.CuttingParaUtil.html","topicUid":"Hi.MillingForces.Fittings.CuttingParaUtil","type":"Class"},{"name":"ICuttingPara","href":"Hi.MillingForces.Fittings.ICuttingPara.html","topicHref":"Hi.MillingForces.Fittings.ICuttingPara.html","topicUid":"Hi.MillingForces.Fittings.ICuttingPara","type":"Interface"},{"name":"IGetCuttingPara","href":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicHref":"Hi.MillingForces.Fittings.IGetCuttingPara.html","topicUid":"Hi.MillingForces.Fittings.IGetCuttingPara","type":"Interface"},{"name":"SampleCategory","href":"Hi.MillingForces.Fittings.SampleCategory.html","topicHref":"Hi.MillingForces.Fittings.SampleCategory.html","topicUid":"Hi.MillingForces.Fittings.SampleCategory","type":"Class"},{"name":"SampleFlag","href":"Hi.MillingForces.Fittings.SampleFlag.html","topicHref":"Hi.MillingForces.Fittings.SampleFlag.html","topicUid":"Hi.MillingForces.Fittings.SampleFlag","type":"Enum"},{"name":"SampleFlagUtil","href":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicHref":"Hi.MillingForces.Fittings.SampleFlagUtil.html","topicUid":"Hi.MillingForces.Fittings.SampleFlagUtil","type":"Class"},{"name":"SampleInstance","href":"Hi.MillingForces.Fittings.SampleInstance.html","topicHref":"Hi.MillingForces.Fittings.SampleInstance.html","topicUid":"Hi.MillingForces.Fittings.SampleInstance","type":"Class"},{"name":"TimeForce","href":"Hi.MillingForces.Fittings.TimeForce.html","topicHref":"Hi.MillingForces.Fittings.TimeForce.html","topicUid":"Hi.MillingForces.Fittings.TimeForce","type":"Class"},{"name":"TimeForceFrequencyDomain","href":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicHref":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain.html","topicUid":"Hi.MillingForces.Fittings.TimeForceFrequencyDomain","type":"Class"},{"name":"TimeForceSeries","href":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeForceSeries","type":"Class"},{"name":"TimeForceUtil","href":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicHref":"Hi.MillingForces.Fittings.TimeForceUtil.html","topicUid":"Hi.MillingForces.Fittings.TimeForceUtil","type":"Class"},{"name":"TimeVsForceSeries","href":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsForceSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsForceSeries","type":"Class"},{"name":"TimeVsTorqueSeries","href":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicHref":"Hi.MillingForces.Fittings.TimeVsTorqueSeries.html","topicUid":"Hi.MillingForces.Fittings.TimeVsTorqueSeries","type":"Class"},{"name":"TrainingSample","href":"Hi.MillingForces.Fittings.TrainingSample.html","topicHref":"Hi.MillingForces.Fittings.TrainingSample.html","topicUid":"Hi.MillingForces.Fittings.TrainingSample","type":"Class"}]},{"name":"Hi.MillingForces.ProfileMillingParas","href":"Hi.MillingForces.ProfileMillingParas.html","topicHref":"Hi.MillingForces.ProfileMillingParas.html","topicUid":"Hi.MillingForces.ProfileMillingParas","type":"Namespace","items":[{"name":"IGetLocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.IGetLocalProfileMillingPara","type":"Interface"},{"name":"LocalProfileMillingPara","href":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicHref":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html","topicUid":"Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara","type":"Class"},{"name":"ProfileMillingParaMap","href":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicHref":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html","topicUid":"Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap","type":"Class"},{"name":"RtaMillingParaKey","href":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicHref":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey.html","topicUid":"Hi.MillingForces.ProfileMillingParas.RtaMillingParaKey","type":"Enum"}]},{"name":"Hi.MillingForces.RakeFaceCuttingParas","href":"Hi.MillingForces.RakeFaceCuttingParas.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas","type":"Namespace","items":[{"name":"IRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara","type":"Interface"},{"name":"MillingPhysicsUtil","href":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil","type":"Class"},{"name":"MultiFormRakeFaceCuttingPara","href":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.MultiFormRakeFaceCuttingPara","type":"Class"},{"name":"RakeFaceCuttingPara2d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d","type":"Class"},{"name":"RakeFaceCuttingPara3d","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d","type":"Class"},{"name":"RakeFaceCuttingParaMap","href":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicHref":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html","topicUid":"Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap","type":"Class"}]},{"name":"Hi.MillingForces.Training","href":"Hi.MillingForces.Training.html","topicHref":"Hi.MillingForces.Training.html","topicUid":"Hi.MillingForces.Training","type":"Namespace","items":[{"name":"MillingTraining","href":"Hi.MillingForces.Training.MillingTraining.html","topicHref":"Hi.MillingForces.Training.MillingTraining.html","topicUid":"Hi.MillingForces.Training.MillingTraining","type":"Class"}]},{"name":"Hi.MillingProcs","href":"Hi.MillingProcs.html","topicHref":"Hi.MillingProcs.html","topicUid":"Hi.MillingProcs","type":"Namespace","items":[{"name":"MillingGuide","href":"Hi.MillingProcs.MillingGuide.html","topicHref":"Hi.MillingProcs.MillingGuide.html","topicUid":"Hi.MillingProcs.MillingGuide","type":"Class"}]},{"name":"Hi.MillingStepUtils","href":"Hi.MillingStepUtils.html","topicHref":"Hi.MillingStepUtils.html","topicUid":"Hi.MillingStepUtils","type":"Namespace","items":[{"name":"ClStripChartConfig","href":"Hi.MillingStepUtils.ClStripChartConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartConfig","type":"Class"},{"name":"ClStripChartItemConfig","href":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicHref":"Hi.MillingStepUtils.ClStripChartItemConfig.html","topicUid":"Hi.MillingStepUtils.ClStripChartItemConfig","type":"Class"},{"name":"ForceCycleFlag","href":"Hi.MillingStepUtils.ForceCycleFlag.html","topicHref":"Hi.MillingStepUtils.ForceCycleFlag.html","topicUid":"Hi.MillingStepUtils.ForceCycleFlag","type":"Enum"},{"name":"ForceCycleLineDivConfig","href":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.ForceCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.ForceCycleLineDivConfig","type":"Class"},{"name":"LineChartVRangeMode","href":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicHref":"Hi.MillingStepUtils.LineChartVRangeMode.html","topicUid":"Hi.MillingStepUtils.LineChartVRangeMode","type":"Enum"},{"name":"SpindleMomentCycleLineDivConfig","href":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicHref":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig.html","topicUid":"Hi.MillingStepUtils.SpindleMomentCycleLineDivConfig","type":"Class"},{"name":"TimeChartYConfig","href":"Hi.MillingStepUtils.TimeChartYConfig.html","topicHref":"Hi.MillingStepUtils.TimeChartYConfig.html","topicUid":"Hi.MillingStepUtils.TimeChartYConfig","type":"Class"}]},{"name":"Hi.MillingSteps","href":"Hi.MillingSteps.html","topicHref":"Hi.MillingSteps.html","topicUid":"Hi.MillingSteps","type":"Namespace","items":[{"name":"MillingInstance","href":"Hi.MillingSteps.MillingInstance.html","topicHref":"Hi.MillingSteps.MillingInstance.html","topicUid":"Hi.MillingSteps.MillingInstance","type":"Class"},{"name":"MillingStepLuggage","href":"Hi.MillingSteps.MillingStepLuggage.html","topicHref":"Hi.MillingSteps.MillingStepLuggage.html","topicUid":"Hi.MillingSteps.MillingStepLuggage","type":"Class"}]},{"name":"Hi.Motion","href":"Hi.Motion.html","topicHref":"Hi.Motion.html","topicUid":"Hi.Motion","type":"Namespace","items":[{"name":"MotionUtil","href":"Hi.Motion.MotionUtil.html","topicHref":"Hi.Motion.MotionUtil.html","topicUid":"Hi.Motion.MotionUtil","type":"Class"}]},{"name":"Hi.Motion.MatValves","href":"Hi.Motion.MatValves.html","topicHref":"Hi.Motion.MatValves.html","topicUid":"Hi.Motion.MatValves","type":"Namespace","items":[{"name":"ClMachiningValve","href":"Hi.Motion.MatValves.ClMachiningValve.html","topicHref":"Hi.Motion.MatValves.ClMachiningValve.html","topicUid":"Hi.Motion.MatValves.ClMachiningValve","type":"Class"},{"name":"IMotionValve","href":"Hi.Motion.MatValves.IMotionValve.html","topicHref":"Hi.Motion.MatValves.IMotionValve.html","topicUid":"Hi.Motion.MatValves.IMotionValve","type":"Interface"},{"name":"MacroMotionValve","href":"Hi.Motion.MatValves.MacroMotionValve.html","topicHref":"Hi.Motion.MatValves.MacroMotionValve.html","topicUid":"Hi.Motion.MatValves.MacroMotionValve","type":"Class"},{"name":"StepMotionValve","href":"Hi.Motion.MatValves.StepMotionValve.html","topicHref":"Hi.Motion.MatValves.StepMotionValve.html","topicUid":"Hi.Motion.MatValves.StepMotionValve","type":"Class"}]},{"name":"Hi.Native","href":"Hi.Native.html","topicHref":"Hi.Native.html","topicUid":"Hi.Native","type":"Namespace","items":[{"name":"StopSource","href":"Hi.Native.StopSource.html","topicHref":"Hi.Native.StopSource.html","topicUid":"Hi.Native.StopSource","type":"Class"},{"name":"StopToken","href":"Hi.Native.StopToken.html","topicHref":"Hi.Native.StopToken.html","topicUid":"Hi.Native.StopToken","type":"Class"},{"name":"StopTokenKit","href":"Hi.Native.StopTokenKit.html","topicHref":"Hi.Native.StopTokenKit.html","topicUid":"Hi.Native.StopTokenKit","type":"Class"},{"name":"StopTokenUtil","href":"Hi.Native.StopTokenUtil.html","topicHref":"Hi.Native.StopTokenUtil.html","topicUid":"Hi.Native.StopTokenUtil","type":"Class"},{"name":"bind_t","href":"Hi.Native.bind_t.html","topicHref":"Hi.Native.bind_t.html","topicUid":"Hi.Native.bind_t","type":"Struct"},{"name":"box2d","href":"Hi.Native.box2d.html","topicHref":"Hi.Native.box2d.html","topicUid":"Hi.Native.box2d","type":"Struct"},{"name":"box3d","href":"Hi.Native.box3d.html","topicHref":"Hi.Native.box3d.html","topicUid":"Hi.Native.box3d","type":"Struct"},{"name":"expand_to_box3d_func_t","href":"Hi.Native.expand_to_box3d_func_t.html","topicHref":"Hi.Native.expand_to_box3d_func_t.html","topicUid":"Hi.Native.expand_to_box3d_func_t","type":"Delegate"},{"name":"key_event_t","href":"Hi.Native.key_event_t.html","topicHref":"Hi.Native.key_event_t.html","topicUid":"Hi.Native.key_event_t","type":"Struct"},{"name":"key_table__transform_view_by_key_pressing_t","href":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicHref":"Hi.Native.key_table__transform_view_by_key_pressing_t.html","topicUid":"Hi.Native.key_table__transform_view_by_key_pressing_t","type":"Struct"},{"name":"mat4d","href":"Hi.Native.mat4d.html","topicHref":"Hi.Native.mat4d.html","topicUid":"Hi.Native.mat4d","type":"Struct"},{"name":"mat_stack_t","href":"Hi.Native.mat_stack_t.html","topicHref":"Hi.Native.mat_stack_t.html","topicUid":"Hi.Native.mat_stack_t","type":"Struct"},{"name":"mouse_button_event_t","href":"Hi.Native.mouse_button_event_t.html","topicHref":"Hi.Native.mouse_button_event_t.html","topicUid":"Hi.Native.mouse_button_event_t","type":"Struct"},{"name":"mouse_button_table__transform_view_by_mouse_drag_t","href":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicHref":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t.html","topicUid":"Hi.Native.mouse_button_table__transform_view_by_mouse_drag_t","type":"Struct"},{"name":"mouse_move_event_t","href":"Hi.Native.mouse_move_event_t.html","topicHref":"Hi.Native.mouse_move_event_t.html","topicUid":"Hi.Native.mouse_move_event_t","type":"Struct"},{"name":"mouse_wheel_event_t","href":"Hi.Native.mouse_wheel_event_t.html","topicHref":"Hi.Native.mouse_wheel_event_t.html","topicUid":"Hi.Native.mouse_wheel_event_t","type":"Struct"},{"name":"panel_state_t","href":"Hi.Native.panel_state_t.html","topicHref":"Hi.Native.panel_state_t.html","topicUid":"Hi.Native.panel_state_t","type":"Struct"},{"name":"picking_event_t","href":"Hi.Native.picking_event_t.html","topicHref":"Hi.Native.picking_event_t.html","topicUid":"Hi.Native.picking_event_t","type":"Struct"},{"name":"picking_mark_t","href":"Hi.Native.picking_mark_t.html","topicHref":"Hi.Native.picking_mark_t.html","topicUid":"Hi.Native.picking_mark_t","type":"Struct"},{"name":"tri3d","href":"Hi.Native.tri3d.html","topicHref":"Hi.Native.tri3d.html","topicUid":"Hi.Native.tri3d","type":"Struct"},{"name":"ui_event_type","href":"Hi.Native.ui_event_type.html","topicHref":"Hi.Native.ui_event_type.html","topicUid":"Hi.Native.ui_event_type","type":"Enum"},{"name":"vec2d","href":"Hi.Native.vec2d.html","topicHref":"Hi.Native.vec2d.html","topicUid":"Hi.Native.vec2d","type":"Struct"},{"name":"vec3d","href":"Hi.Native.vec3d.html","topicHref":"Hi.Native.vec3d.html","topicUid":"Hi.Native.vec3d","type":"Struct"},{"name":"vec3f","href":"Hi.Native.vec3f.html","topicHref":"Hi.Native.vec3f.html","topicUid":"Hi.Native.vec3f","type":"Struct"}]},{"name":"Hi.NcMech","href":"Hi.NcMech.html","topicHref":"Hi.NcMech.html","topicUid":"Hi.NcMech","type":"Namespace","items":[{"name":"ICollisionIndexPairsSource","href":"Hi.NcMech.ICollisionIndexPairsSource.html","topicHref":"Hi.NcMech.ICollisionIndexPairsSource.html","topicUid":"Hi.NcMech.ICollisionIndexPairsSource","type":"Interface"}]},{"name":"Hi.NcMech.Fixtures","href":"Hi.NcMech.Fixtures.html","topicHref":"Hi.NcMech.Fixtures.html","topicUid":"Hi.NcMech.Fixtures","type":"Namespace","items":[{"name":"Fixture","href":"Hi.NcMech.Fixtures.Fixture.html","topicHref":"Hi.NcMech.Fixtures.Fixture.html","topicUid":"Hi.NcMech.Fixtures.Fixture","type":"Class"},{"name":"FixtureEditorDisplayee","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayee.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayee","type":"Class"},{"name":"FixtureEditorDisplayeeConfig","href":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Fixtures.FixtureEditorDisplayeeConfig","type":"Class"}]},{"name":"Hi.NcMech.Holders","href":"Hi.NcMech.Holders.html","topicHref":"Hi.NcMech.Holders.html","topicUid":"Hi.NcMech.Holders","type":"Namespace","items":[{"name":"CylindroidHolder","href":"Hi.NcMech.Holders.CylindroidHolder.html","topicHref":"Hi.NcMech.Holders.CylindroidHolder.html","topicUid":"Hi.NcMech.Holders.CylindroidHolder","type":"Class"},{"name":"FreeformHolder","href":"Hi.NcMech.Holders.FreeformHolder.html","topicHref":"Hi.NcMech.Holders.FreeformHolder.html","topicUid":"Hi.NcMech.Holders.FreeformHolder","type":"Class"},{"name":"HolderEditorDisplayee","href":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicHref":"Hi.NcMech.Holders.HolderEditorDisplayee.html","topicUid":"Hi.NcMech.Holders.HolderEditorDisplayee","type":"Class"},{"name":"IHolder","href":"Hi.NcMech.Holders.IHolder.html","topicHref":"Hi.NcMech.Holders.IHolder.html","topicUid":"Hi.NcMech.Holders.IHolder","type":"Interface"}]},{"name":"Hi.NcMech.Solids","href":"Hi.NcMech.Solids.html","topicHref":"Hi.NcMech.Solids.html","topicUid":"Hi.NcMech.Solids","type":"Namespace","items":[{"name":"IGetSolid","href":"Hi.NcMech.Solids.IGetSolid.html","topicHref":"Hi.NcMech.Solids.IGetSolid.html","topicUid":"Hi.NcMech.Solids.IGetSolid","type":"Interface"},{"name":"Solid","href":"Hi.NcMech.Solids.Solid.html","topicHref":"Hi.NcMech.Solids.Solid.html","topicUid":"Hi.NcMech.Solids.Solid","type":"Class"},{"name":"Solid.RenderingModeEnum","href":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicHref":"Hi.NcMech.Solids.Solid.RenderingModeEnum.html","topicUid":"Hi.NcMech.Solids.Solid.RenderingModeEnum","type":"Enum"},{"name":"SolidFuncSource","href":"Hi.NcMech.Solids.SolidFuncSource.html","topicHref":"Hi.NcMech.Solids.SolidFuncSource.html","topicUid":"Hi.NcMech.Solids.SolidFuncSource","type":"Class"}]},{"name":"Hi.NcMech.Topo","href":"Hi.NcMech.Topo.html","topicHref":"Hi.NcMech.Topo.html","topicUid":"Hi.NcMech.Topo","type":"Namespace","items":[{"name":"INcStroke","href":"Hi.NcMech.Topo.INcStroke.html","topicHref":"Hi.NcMech.Topo.INcStroke.html","topicUid":"Hi.NcMech.Topo.INcStroke","type":"Interface"},{"name":"INcTransformer","href":"Hi.NcMech.Topo.INcTransformer.html","topicHref":"Hi.NcMech.Topo.INcTransformer.html","topicUid":"Hi.NcMech.Topo.INcTransformer","type":"Interface"},{"name":"ITopoBrick","href":"Hi.NcMech.Topo.ITopoBrick.html","topicHref":"Hi.NcMech.Topo.ITopoBrick.html","topicUid":"Hi.NcMech.Topo.ITopoBrick","type":"Interface"},{"name":"NcRotation","href":"Hi.NcMech.Topo.NcRotation.html","topicHref":"Hi.NcMech.Topo.NcRotation.html","topicUid":"Hi.NcMech.Topo.NcRotation","type":"Class"},{"name":"NcTranslation","href":"Hi.NcMech.Topo.NcTranslation.html","topicHref":"Hi.NcMech.Topo.NcTranslation.html","topicUid":"Hi.NcMech.Topo.NcTranslation","type":"Class"},{"name":"SolidSourceTopoBrick","href":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.SolidSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.SolidSourceTopoBrick","type":"Class"},{"name":"StlSourceTopoBrick","href":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicHref":"Hi.NcMech.Topo.StlSourceTopoBrick.html","topicUid":"Hi.NcMech.Topo.StlSourceTopoBrick","type":"Class"}]},{"name":"Hi.NcMech.Workpieces","href":"Hi.NcMech.Workpieces.html","topicHref":"Hi.NcMech.Workpieces.html","topicUid":"Hi.NcMech.Workpieces","type":"Namespace","items":[{"name":"Workpiece","href":"Hi.NcMech.Workpieces.Workpiece.html","topicHref":"Hi.NcMech.Workpieces.Workpiece.html","topicUid":"Hi.NcMech.Workpieces.Workpiece","type":"Class"},{"name":"WorkpieceEditorDisplayee","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayee","type":"Class"},{"name":"WorkpieceEditorDisplayeeConfig","href":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig","type":"Class"},{"name":"WorkpieceService","href":"Hi.NcMech.Workpieces.WorkpieceService.html","topicHref":"Hi.NcMech.Workpieces.WorkpieceService.html","topicUid":"Hi.NcMech.Workpieces.WorkpieceService","type":"Class"}]},{"name":"Hi.NcMech.Xyzabc","href":"Hi.NcMech.Xyzabc.html","topicHref":"Hi.NcMech.Xyzabc.html","topicUid":"Hi.NcMech.Xyzabc","type":"Namespace","items":[{"name":"CodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineTool","type":"Class"},{"name":"CodeXyzabcMachineToolUri","href":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicHref":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html","topicUid":"Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri","type":"Class"},{"name":"GeneralXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool","type":"Class"},{"name":"IGetCodeXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool","type":"Interface"},{"name":"IXyzabcMachineTool","href":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicHref":"Hi.NcMech.Xyzabc.IXyzabcMachineTool.html","topicUid":"Hi.NcMech.Xyzabc.IXyzabcMachineTool","type":"Interface"}]},{"name":"Hi.NcOpt","href":"Hi.NcOpt.html","topicHref":"Hi.NcOpt.html","topicUid":"Hi.NcOpt","type":"Namespace","items":[{"name":"CuttingVelocityOptLimit","href":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.CuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.CuttingVelocityOptLimit","type":"Class"},{"name":"FixedFeedPerCycleOptLimit","href":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerCycleOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerCycleOptLimit","type":"Class"},{"name":"FixedFeedPerToothOptLimit","href":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.FixedFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.FixedFeedPerToothOptLimit","type":"Class"},{"name":"ICutterOptLimitHost","href":"Hi.NcOpt.ICutterOptLimitHost.html","topicHref":"Hi.NcOpt.ICutterOptLimitHost.html","topicUid":"Hi.NcOpt.ICutterOptLimitHost","type":"Interface"},{"name":"ICutterOptOption","href":"Hi.NcOpt.ICutterOptOption.html","topicHref":"Hi.NcOpt.ICutterOptOption.html","topicUid":"Hi.NcOpt.ICutterOptOption","type":"Interface"},{"name":"ICuttingVelocityOptLimit","href":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicHref":"Hi.NcOpt.ICuttingVelocityOptLimit.html","topicUid":"Hi.NcOpt.ICuttingVelocityOptLimit","type":"Interface"},{"name":"IFeedPerToothOptLimit","href":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicHref":"Hi.NcOpt.IFeedPerToothOptLimit.html","topicUid":"Hi.NcOpt.IFeedPerToothOptLimit","type":"Interface"},{"name":"MillingCutterOptOption","href":"Hi.NcOpt.MillingCutterOptOption.html","topicHref":"Hi.NcOpt.MillingCutterOptOption.html","topicUid":"Hi.NcOpt.MillingCutterOptOption","type":"Class"},{"name":"NcOptOption","href":"Hi.NcOpt.NcOptOption.html","topicHref":"Hi.NcOpt.NcOptOption.html","topicUid":"Hi.NcOpt.NcOptOption","type":"Class"},{"name":"NcOptProc","href":"Hi.NcOpt.NcOptProc.html","topicHref":"Hi.NcOpt.NcOptProc.html","topicUid":"Hi.NcOpt.NcOptProc","type":"Class"},{"name":"NcOptimizationEmbeddedLogMode","href":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicHref":"Hi.NcOpt.NcOptimizationEmbeddedLogMode.html","topicUid":"Hi.NcOpt.NcOptimizationEmbeddedLogMode","type":"Enum"},{"name":"ShapeBasedCutterOptLimit","href":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicHref":"Hi.NcOpt.ShapeBasedCutterOptLimit.html","topicUid":"Hi.NcOpt.ShapeBasedCutterOptLimit","type":"Class"}]},{"name":"Hi.NcParsers","href":"Hi.NcParsers.html","topicHref":"Hi.NcParsers.html","topicUid":"Hi.NcParsers","type":"Namespace","items":[{"name":"IGetSentence","href":"Hi.NcParsers.IGetSentence.html","topicHref":"Hi.NcParsers.IGetSentence.html","topicUid":"Hi.NcParsers.IGetSentence","type":"Interface"},{"name":"ISentenceCarrier","href":"Hi.NcParsers.ISentenceCarrier.html","topicHref":"Hi.NcParsers.ISentenceCarrier.html","topicUid":"Hi.NcParsers.ISentenceCarrier","type":"Interface"},{"name":"ISentenceIndexed","href":"Hi.NcParsers.ISentenceIndexed.html","topicHref":"Hi.NcParsers.ISentenceIndexed.html","topicUid":"Hi.NcParsers.ISentenceIndexed","type":"Interface"},{"name":"IndexedSentence","href":"Hi.NcParsers.IndexedSentence.html","topicHref":"Hi.NcParsers.IndexedSentence.html","topicUid":"Hi.NcParsers.IndexedSentence","type":"Class"},{"name":"NcDiagnostic","href":"Hi.NcParsers.NcDiagnostic.html","topicHref":"Hi.NcParsers.NcDiagnostic.html","topicUid":"Hi.NcParsers.NcDiagnostic","type":"Class"},{"name":"NcDiagnosticCategory","href":"Hi.NcParsers.NcDiagnosticCategory.html","topicHref":"Hi.NcParsers.NcDiagnosticCategory.html","topicUid":"Hi.NcParsers.NcDiagnosticCategory","type":"Enum"},{"name":"NcDiagnosticProgress","href":"Hi.NcParsers.NcDiagnosticProgress.html","topicHref":"Hi.NcParsers.NcDiagnosticProgress.html","topicUid":"Hi.NcParsers.NcDiagnosticProgress","type":"Class"},{"name":"NcDiagnosticSeverity","href":"Hi.NcParsers.NcDiagnosticSeverity.html","topicHref":"Hi.NcParsers.NcDiagnosticSeverity.html","topicUid":"Hi.NcParsers.NcDiagnosticSeverity","type":"Enum"},{"name":"Sentence","href":"Hi.NcParsers.Sentence.html","topicHref":"Hi.NcParsers.Sentence.html","topicUid":"Hi.NcParsers.Sentence","type":"Class"},{"name":"SoftNcRunner","href":"Hi.NcParsers.SoftNcRunner.html","topicHref":"Hi.NcParsers.SoftNcRunner.html","topicUid":"Hi.NcParsers.SoftNcRunner","type":"Class"},{"name":"SoftNcUtil","href":"Hi.NcParsers.SoftNcUtil.html","topicHref":"Hi.NcParsers.SoftNcUtil.html","topicUid":"Hi.NcParsers.SoftNcUtil","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys","href":"Hi.NcParsers.Dependencys.html","topicHref":"Hi.NcParsers.Dependencys.html","topicUid":"Hi.NcParsers.Dependencys","type":"Namespace","items":[{"name":"AxisType","href":"Hi.NcParsers.Dependencys.AxisType.html","topicHref":"Hi.NcParsers.Dependencys.AxisType.html","topicUid":"Hi.NcParsers.Dependencys.AxisType","type":"Enum"},{"name":"CncBrandDependency","href":"Hi.NcParsers.Dependencys.CncBrandDependency.html","topicHref":"Hi.NcParsers.Dependencys.CncBrandDependency.html","topicUid":"Hi.NcParsers.Dependencys.CncBrandDependency","type":"Class"},{"name":"ControllerParameterTableBase","href":"Hi.NcParsers.Dependencys.ControllerParameterTableBase.html","topicHref":"Hi.NcParsers.Dependencys.ControllerParameterTableBase.html","topicUid":"Hi.NcParsers.Dependencys.ControllerParameterTableBase","type":"Class"},{"name":"HeidenhainDatumTable","href":"Hi.NcParsers.Dependencys.HeidenhainDatumTable.html","topicHref":"Hi.NcParsers.Dependencys.HeidenhainDatumTable.html","topicUid":"Hi.NcParsers.Dependencys.HeidenhainDatumTable","type":"Class"},{"name":"IBlockSkipConfig","href":"Hi.NcParsers.Dependencys.IBlockSkipConfig.html","topicHref":"Hi.NcParsers.Dependencys.IBlockSkipConfig.html","topicUid":"Hi.NcParsers.Dependencys.IBlockSkipConfig","type":"Interface"},{"name":"ICannedCycleConfig","href":"Hi.NcParsers.Dependencys.ICannedCycleConfig.html","topicHref":"Hi.NcParsers.Dependencys.ICannedCycleConfig.html","topicUid":"Hi.NcParsers.Dependencys.ICannedCycleConfig","type":"Interface"},{"name":"IHomeMcConfig","href":"Hi.NcParsers.Dependencys.IHomeMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.IHomeMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.IHomeMcConfig","type":"Interface"},{"name":"IIsoCoordinateConfig","href":"Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html","topicHref":"Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html","topicUid":"Hi.NcParsers.Dependencys.IIsoCoordinateConfig","type":"Interface"},{"name":"IMachineAxisConfig","href":"Hi.NcParsers.Dependencys.IMachineAxisConfig.html","topicHref":"Hi.NcParsers.Dependencys.IMachineAxisConfig.html","topicUid":"Hi.NcParsers.Dependencys.IMachineAxisConfig","type":"Interface"},{"name":"INcDependency","href":"Hi.NcParsers.Dependencys.INcDependency.html","topicHref":"Hi.NcParsers.Dependencys.INcDependency.html","topicUid":"Hi.NcParsers.Dependencys.INcDependency","type":"Interface"},{"name":"IPowerResettable","href":"Hi.NcParsers.Dependencys.IPowerResettable.html","topicHref":"Hi.NcParsers.Dependencys.IPowerResettable.html","topicUid":"Hi.NcParsers.Dependencys.IPowerResettable","type":"Interface"},{"name":"IRapidFeedrateConfig","href":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html","topicHref":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html","topicUid":"Hi.NcParsers.Dependencys.IRapidFeedrateConfig","type":"Interface"},{"name":"IStrokeLimitConfig","href":"Hi.NcParsers.Dependencys.IStrokeLimitConfig.html","topicHref":"Hi.NcParsers.Dependencys.IStrokeLimitConfig.html","topicUid":"Hi.NcParsers.Dependencys.IStrokeLimitConfig","type":"Interface"},{"name":"IToolOffsetConfig","href":"Hi.NcParsers.Dependencys.IToolOffsetConfig.html","topicHref":"Hi.NcParsers.Dependencys.IToolOffsetConfig.html","topicUid":"Hi.NcParsers.Dependencys.IToolOffsetConfig","type":"Interface"},{"name":"IToolingMcConfig","href":"Hi.NcParsers.Dependencys.IToolingMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.IToolingMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.IToolingMcConfig","type":"Interface"},{"name":"IsoCoordinateAddressMap","href":"Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html","topicHref":"Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html","topicUid":"Hi.NcParsers.Dependencys.IsoCoordinateAddressMap","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Fanuc","href":"Hi.NcParsers.Dependencys.Fanuc.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc","type":"Namespace","items":[{"name":"CutterCompensationType","href":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType","type":"Enum"},{"name":"FanucGotoIterationDependency","href":"Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency","type":"Class"},{"name":"FanucParameterTable","href":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable","type":"Class"},{"name":"FanucPositionVariableLookup","href":"Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup","type":"Class"},{"name":"FanucToolOffsetVariableLookup","href":"Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup","type":"Class"},{"name":"RetainedCommonVariableTable","href":"Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html","topicHref":"Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html","topicUid":"Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Generic","href":"Hi.NcParsers.Dependencys.Generic.html","topicHref":"Hi.NcParsers.Dependencys.Generic.html","topicUid":"Hi.NcParsers.Dependencys.Generic","type":"Namespace","items":[{"name":"FallbackConfig","href":"Hi.NcParsers.Dependencys.Generic.FallbackConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.FallbackConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.FallbackConfig","type":"Class"},{"name":"GenericBlockSkipConfig","href":"Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig","type":"Class"},{"name":"IsoCoordinateTable","href":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html","topicHref":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html","topicUid":"Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable","type":"Class"},{"name":"SubProgramFolderConfig","href":"Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig","type":"Class"},{"name":"ToolOffsetRow","href":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolOffsetRow","type":"Class"},{"name":"ToolOffsetTable","href":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolOffsetTable","type":"Class"},{"name":"ToolingMcConfig","href":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html","topicHref":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html","topicUid":"Hi.NcParsers.Dependencys.Generic.ToolingMcConfig","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Heidenhain","href":"Hi.NcParsers.Dependencys.Heidenhain.html","topicHref":"Hi.NcParsers.Dependencys.Heidenhain.html","topicUid":"Hi.NcParsers.Dependencys.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainParameterTable","href":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Siemens","href":"Hi.NcParsers.Dependencys.Siemens.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.html","topicUid":"Hi.NcParsers.Dependencys.Siemens","type":"Namespace","items":[{"name":"ISiemensToolOffsetConfig","href":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig","type":"Interface"},{"name":"SiemensFrameTable","href":"Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable","type":"Class"},{"name":"SiemensMachineDataTable","href":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html","topicHref":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html","topicUid":"Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.Syntec","href":"Hi.NcParsers.Dependencys.Syntec.html","topicHref":"Hi.NcParsers.Dependencys.Syntec.html","topicUid":"Hi.NcParsers.Dependencys.Syntec","type":"Namespace","items":[{"name":"SyntecParameterTable","href":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html","topicHref":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html","topicUid":"Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable","type":"Class"}]},{"name":"Hi.NcParsers.Dependencys.SystemWired","href":"Hi.NcParsers.Dependencys.SystemWired.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired","type":"Namespace","items":[{"name":"FileIndexCounterDependency","href":"Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency","type":"Class"},{"name":"NcKinematicsDependency","href":"Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency","type":"Class"},{"name":"ProjectFolderDependency","href":"Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency","type":"Class"},{"name":"SegmenterDependency","href":"Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency","type":"Class"},{"name":"SyntaxPieceLayerDependency","href":"Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html","topicHref":"Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html","topicUid":"Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency","type":"Class"}]},{"name":"Hi.NcParsers.EvaluationSyntaxs","href":"Hi.NcParsers.EvaluationSyntaxs.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs","type":"Namespace","items":[{"name":"CallStackUtil","href":"Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.CallStackUtil","type":"Class"},{"name":"LabelScanUtil","href":"Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil","type":"Class"},{"name":"MacroFileResolver","href":"Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver","type":"Class"},{"name":"MacroFileResolver.ResolvedFile","href":"Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile","type":"Struct"},{"name":"MacroInlineUtil","href":"Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil","type":"Class"},{"name":"RetainedCommonVariableReadingSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax","type":"Class"},{"name":"SubProgramCallSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax","type":"Class"},{"name":"SubProgramReturnSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax","type":"Class"},{"name":"VariableEvaluatorSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax","type":"Class"},{"name":"VolatileVariableReadingSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax","type":"Class"}]},{"name":"Hi.NcParsers.EvaluationSyntaxs.Evaluation","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation","type":"Namespace","items":[{"name":"EvalResult","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult","type":"Struct"},{"name":"IRuntimeVariableLookup","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup","type":"Interface"},{"name":"IVariableLookup","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup","type":"Interface"},{"name":"LocalVariableLookup","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup","type":"Class"},{"name":"NcBinaryExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr","type":"Class"},{"name":"NcBinaryOp","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp","type":"Enum"},{"name":"NcExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr","type":"Class"},{"name":"NcExpressionEvaluator","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator","type":"Class"},{"name":"NcExpressionParser","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser","type":"Class"},{"name":"NcFunctionExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr","type":"Class"},{"name":"NcIndirectVariableExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcIndirectVariableExpr","type":"Class"},{"name":"NcLiteralExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcLiteralExpr","type":"Class"},{"name":"NcUnaryExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryExpr","type":"Class"},{"name":"NcUnaryOp","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcUnaryOp","type":"Enum"},{"name":"NcVariableExpr","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcVariableExpr","type":"Class"},{"name":"VolatileVariableLookup","href":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup","type":"Class"}]},{"name":"Hi.NcParsers.EvaluationSyntaxs.Fanuc","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc","type":"Namespace","items":[{"name":"FanucGotoSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax","type":"Class"},{"name":"FanucIfThenSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax","type":"Class"},{"name":"FanucLocalVariableReadingSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax","type":"Class"},{"name":"FanucMacroArgumentMap","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap","type":"Class"},{"name":"FanucMacroCallSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax","type":"Class"},{"name":"FanucModalMacroSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax","type":"Class"},{"name":"FanucModalMacroSyntax.SyntaxPhase","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase","type":"Enum"},{"name":"FanucSystemControlVariableSyntax","href":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html","topicHref":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html","topicUid":"Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax","type":"Class"}]},{"name":"Hi.NcParsers.Initializers","href":"Hi.NcParsers.Initializers.html","topicHref":"Hi.NcParsers.Initializers.html","topicUid":"Hi.NcParsers.Initializers","type":"Namespace","items":[{"name":"HomeMcInitializer","href":"Hi.NcParsers.Initializers.HomeMcInitializer.html","topicHref":"Hi.NcParsers.Initializers.HomeMcInitializer.html","topicUid":"Hi.NcParsers.Initializers.HomeMcInitializer","type":"Class"},{"name":"INcInitializer","href":"Hi.NcParsers.Initializers.INcInitializer.html","topicHref":"Hi.NcParsers.Initializers.INcInitializer.html","topicUid":"Hi.NcParsers.Initializers.INcInitializer","type":"Interface"},{"name":"StaticInitializer","href":"Hi.NcParsers.Initializers.StaticInitializer.html","topicHref":"Hi.NcParsers.Initializers.StaticInitializer.html","topicUid":"Hi.NcParsers.Initializers.StaticInitializer","type":"Class"}]},{"name":"Hi.NcParsers.InspectionSyntaxs","href":"Hi.NcParsers.InspectionSyntaxs.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.html","topicUid":"Hi.NcParsers.InspectionSyntaxs","type":"Namespace","items":[{"name":"CleanupSyntax","href":"Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html","topicUid":"Hi.NcParsers.InspectionSyntaxs.CleanupSyntax","type":"Class"},{"name":"ProgramXyzBackfillSyntax","href":"Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html","topicUid":"Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax","type":"Class"},{"name":"SnapshotSyntax","href":"Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html","topicUid":"Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax","type":"Class"},{"name":"UnconsumedCheckSyntax","href":"Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html","topicHref":"Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html","topicUid":"Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax","type":"Class"}]},{"name":"Hi.NcParsers.Keywords","href":"Hi.NcParsers.Keywords.html","topicHref":"Hi.NcParsers.Keywords.html","topicUid":"Hi.NcParsers.Keywords","type":"Namespace","items":[{"name":"BlockSkip","href":"Hi.NcParsers.Keywords.BlockSkip.html","topicHref":"Hi.NcParsers.Keywords.BlockSkip.html","topicUid":"Hi.NcParsers.Keywords.BlockSkip","type":"Class"},{"name":"CallFrame","href":"Hi.NcParsers.Keywords.CallFrame.html","topicHref":"Hi.NcParsers.Keywords.CallFrame.html","topicUid":"Hi.NcParsers.Keywords.CallFrame","type":"Class"},{"name":"CallStack","href":"Hi.NcParsers.Keywords.CallStack.html","topicHref":"Hi.NcParsers.Keywords.CallStack.html","topicUid":"Hi.NcParsers.Keywords.CallStack","type":"Class"},{"name":"CannedCycle","href":"Hi.NcParsers.Keywords.CannedCycle.html","topicHref":"Hi.NcParsers.Keywords.CannedCycle.html","topicUid":"Hi.NcParsers.Keywords.CannedCycle","type":"Class"},{"name":"Comment","href":"Hi.NcParsers.Keywords.Comment.html","topicHref":"Hi.NcParsers.Keywords.Comment.html","topicUid":"Hi.NcParsers.Keywords.Comment","type":"Class"},{"name":"CompoundMotion","href":"Hi.NcParsers.Keywords.CompoundMotion.html","topicHref":"Hi.NcParsers.Keywords.CompoundMotion.html","topicUid":"Hi.NcParsers.Keywords.CompoundMotion","type":"Class"},{"name":"Coolant","href":"Hi.NcParsers.Keywords.Coolant.html","topicHref":"Hi.NcParsers.Keywords.Coolant.html","topicUid":"Hi.NcParsers.Keywords.Coolant","type":"Class"},{"name":"CoordinateOffset","href":"Hi.NcParsers.Keywords.CoordinateOffset.html","topicHref":"Hi.NcParsers.Keywords.CoordinateOffset.html","topicUid":"Hi.NcParsers.Keywords.CoordinateOffset","type":"Class"},{"name":"CsScript","href":"Hi.NcParsers.Keywords.CsScript.html","topicHref":"Hi.NcParsers.Keywords.CsScript.html","topicUid":"Hi.NcParsers.Keywords.CsScript","type":"Class"},{"name":"Dwell","href":"Hi.NcParsers.Keywords.Dwell.html","topicHref":"Hi.NcParsers.Keywords.Dwell.html","topicUid":"Hi.NcParsers.Keywords.Dwell","type":"Class"},{"name":"FanucGoto","href":"Hi.NcParsers.Keywords.FanucGoto.html","topicHref":"Hi.NcParsers.Keywords.FanucGoto.html","topicUid":"Hi.NcParsers.Keywords.FanucGoto","type":"Class"},{"name":"FanucIfThen","href":"Hi.NcParsers.Keywords.FanucIfThen.html","topicHref":"Hi.NcParsers.Keywords.FanucIfThen.html","topicUid":"Hi.NcParsers.Keywords.FanucIfThen","type":"Class"},{"name":"FanucMacroCall","href":"Hi.NcParsers.Keywords.FanucMacroCall.html","topicHref":"Hi.NcParsers.Keywords.FanucMacroCall.html","topicUid":"Hi.NcParsers.Keywords.FanucMacroCall","type":"Class"},{"name":"FanucModalMacro","href":"Hi.NcParsers.Keywords.FanucModalMacro.html","topicHref":"Hi.NcParsers.Keywords.FanucModalMacro.html","topicUid":"Hi.NcParsers.Keywords.FanucModalMacro","type":"Class"},{"name":"FanucPathSmoothing","href":"Hi.NcParsers.Keywords.FanucPathSmoothing.html","topicHref":"Hi.NcParsers.Keywords.FanucPathSmoothing.html","topicUid":"Hi.NcParsers.Keywords.FanucPathSmoothing","type":"Class"},{"name":"FanucProgramNumber","href":"Hi.NcParsers.Keywords.FanucProgramNumber.html","topicHref":"Hi.NcParsers.Keywords.FanucProgramNumber.html","topicUid":"Hi.NcParsers.Keywords.FanucProgramNumber","type":"Class"},{"name":"Feedrate","href":"Hi.NcParsers.Keywords.Feedrate.html","topicHref":"Hi.NcParsers.Keywords.Feedrate.html","topicUid":"Hi.NcParsers.Keywords.Feedrate","type":"Class"},{"name":"IArcMotionDef","href":"Hi.NcParsers.Keywords.IArcMotionDef.html","topicHref":"Hi.NcParsers.Keywords.IArcMotionDef.html","topicUid":"Hi.NcParsers.Keywords.IArcMotionDef","type":"Interface"},{"name":"ICannedCycleDef","href":"Hi.NcParsers.Keywords.ICannedCycleDef.html","topicHref":"Hi.NcParsers.Keywords.ICannedCycleDef.html","topicUid":"Hi.NcParsers.Keywords.ICannedCycleDef","type":"Interface"},{"name":"ICompoundMotionDef","href":"Hi.NcParsers.Keywords.ICompoundMotionDef.html","topicHref":"Hi.NcParsers.Keywords.ICompoundMotionDef.html","topicUid":"Hi.NcParsers.Keywords.ICompoundMotionDef","type":"Interface"},{"name":"ICoolantDef","href":"Hi.NcParsers.Keywords.ICoolantDef.html","topicHref":"Hi.NcParsers.Keywords.ICoolantDef.html","topicUid":"Hi.NcParsers.Keywords.ICoolantDef","type":"Interface"},{"name":"IDwellDef","href":"Hi.NcParsers.Keywords.IDwellDef.html","topicHref":"Hi.NcParsers.Keywords.IDwellDef.html","topicUid":"Hi.NcParsers.Keywords.IDwellDef","type":"Interface"},{"name":"IFanucPathSmoothingDef","href":"Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html","topicHref":"Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html","topicUid":"Hi.NcParsers.Keywords.IFanucPathSmoothingDef","type":"Interface"},{"name":"IFeedrateDef","href":"Hi.NcParsers.Keywords.IFeedrateDef.html","topicHref":"Hi.NcParsers.Keywords.IFeedrateDef.html","topicUid":"Hi.NcParsers.Keywords.IFeedrateDef","type":"Interface"},{"name":"IFlagsDef","href":"Hi.NcParsers.Keywords.IFlagsDef.html","topicHref":"Hi.NcParsers.Keywords.IFlagsDef.html","topicUid":"Hi.NcParsers.Keywords.IFlagsDef","type":"Interface"},{"name":"IMachineCoordinateStateDef","href":"Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html","topicHref":"Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html","topicUid":"Hi.NcParsers.Keywords.IMachineCoordinateStateDef","type":"Interface"},{"name":"IMotionEventDef","href":"Hi.NcParsers.Keywords.IMotionEventDef.html","topicHref":"Hi.NcParsers.Keywords.IMotionEventDef.html","topicUid":"Hi.NcParsers.Keywords.IMotionEventDef","type":"Interface"},{"name":"IMotionStateDef","href":"Hi.NcParsers.Keywords.IMotionStateDef.html","topicHref":"Hi.NcParsers.Keywords.IMotionStateDef.html","topicUid":"Hi.NcParsers.Keywords.IMotionStateDef","type":"Interface"},{"name":"IParsingDef","href":"Hi.NcParsers.Keywords.IParsingDef.html","topicHref":"Hi.NcParsers.Keywords.IParsingDef.html","topicUid":"Hi.NcParsers.Keywords.IParsingDef","type":"Interface"},{"name":"IPathSmoothingDef","href":"Hi.NcParsers.Keywords.IPathSmoothingDef.html","topicHref":"Hi.NcParsers.Keywords.IPathSmoothingDef.html","topicUid":"Hi.NcParsers.Keywords.IPathSmoothingDef","type":"Interface"},{"name":"IPlaneSelectDef","href":"Hi.NcParsers.Keywords.IPlaneSelectDef.html","topicHref":"Hi.NcParsers.Keywords.IPlaneSelectDef.html","topicUid":"Hi.NcParsers.Keywords.IPlaneSelectDef","type":"Interface"},{"name":"IPositioningDef","href":"Hi.NcParsers.Keywords.IPositioningDef.html","topicHref":"Hi.NcParsers.Keywords.IPositioningDef.html","topicUid":"Hi.NcParsers.Keywords.IPositioningDef","type":"Interface"},{"name":"IProgramEndDef","href":"Hi.NcParsers.Keywords.IProgramEndDef.html","topicHref":"Hi.NcParsers.Keywords.IProgramEndDef.html","topicUid":"Hi.NcParsers.Keywords.IProgramEndDef","type":"Interface"},{"name":"IProgramStopDef","href":"Hi.NcParsers.Keywords.IProgramStopDef.html","topicHref":"Hi.NcParsers.Keywords.IProgramStopDef.html","topicUid":"Hi.NcParsers.Keywords.IProgramStopDef","type":"Interface"},{"name":"IProgramXyzDef","href":"Hi.NcParsers.Keywords.IProgramXyzDef.html","topicHref":"Hi.NcParsers.Keywords.IProgramXyzDef.html","topicUid":"Hi.NcParsers.Keywords.IProgramXyzDef","type":"Interface"},{"name":"IRadiusCompensationDef","href":"Hi.NcParsers.Keywords.IRadiusCompensationDef.html","topicHref":"Hi.NcParsers.Keywords.IRadiusCompensationDef.html","topicUid":"Hi.NcParsers.Keywords.IRadiusCompensationDef","type":"Interface"},{"name":"ISpindleControlDef","href":"Hi.NcParsers.Keywords.ISpindleControlDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleControlDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleControlDef","type":"Interface"},{"name":"ISpindleOrientationDef","href":"Hi.NcParsers.Keywords.ISpindleOrientationDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleOrientationDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleOrientationDef","type":"Interface"},{"name":"ISpindleSpeedDef","href":"Hi.NcParsers.Keywords.ISpindleSpeedDef.html","topicHref":"Hi.NcParsers.Keywords.ISpindleSpeedDef.html","topicUid":"Hi.NcParsers.Keywords.ISpindleSpeedDef","type":"Interface"},{"name":"ITiltTransformDef","href":"Hi.NcParsers.Keywords.ITiltTransformDef.html","topicHref":"Hi.NcParsers.Keywords.ITiltTransformDef.html","topicUid":"Hi.NcParsers.Keywords.ITiltTransformDef","type":"Interface"},{"name":"IToolHeightCompensationDef","href":"Hi.NcParsers.Keywords.IToolHeightCompensationDef.html","topicHref":"Hi.NcParsers.Keywords.IToolHeightCompensationDef.html","topicUid":"Hi.NcParsers.Keywords.IToolHeightCompensationDef","type":"Interface"},{"name":"ITransformationDef","href":"Hi.NcParsers.Keywords.ITransformationDef.html","topicHref":"Hi.NcParsers.Keywords.ITransformationDef.html","topicUid":"Hi.NcParsers.Keywords.ITransformationDef","type":"Interface"},{"name":"IUnitDef","href":"Hi.NcParsers.Keywords.IUnitDef.html","topicHref":"Hi.NcParsers.Keywords.IUnitDef.html","topicUid":"Hi.NcParsers.Keywords.IUnitDef","type":"Interface"},{"name":"IUnparsedTextDef","href":"Hi.NcParsers.Keywords.IUnparsedTextDef.html","topicHref":"Hi.NcParsers.Keywords.IUnparsedTextDef.html","topicUid":"Hi.NcParsers.Keywords.IUnparsedTextDef","type":"Interface"},{"name":"IndexNote","href":"Hi.NcParsers.Keywords.IndexNote.html","topicHref":"Hi.NcParsers.Keywords.IndexNote.html","topicUid":"Hi.NcParsers.Keywords.IndexNote","type":"Class"},{"name":"IsoLocalCoordinateOffset","href":"Hi.NcParsers.Keywords.IsoLocalCoordinateOffset.html","topicHref":"Hi.NcParsers.Keywords.IsoLocalCoordinateOffset.html","topicUid":"Hi.NcParsers.Keywords.IsoLocalCoordinateOffset","type":"Class"},{"name":"MachineCoordinateState","href":"Hi.NcParsers.Keywords.MachineCoordinateState.html","topicHref":"Hi.NcParsers.Keywords.MachineCoordinateState.html","topicUid":"Hi.NcParsers.Keywords.MachineCoordinateState","type":"Class"},{"name":"MacroFrame","href":"Hi.NcParsers.Keywords.MacroFrame.html","topicHref":"Hi.NcParsers.Keywords.MacroFrame.html","topicUid":"Hi.NcParsers.Keywords.MacroFrame","type":"Class"},{"name":"MotionEvent","href":"Hi.NcParsers.Keywords.MotionEvent.html","topicHref":"Hi.NcParsers.Keywords.MotionEvent.html","topicUid":"Hi.NcParsers.Keywords.MotionEvent","type":"Class"},{"name":"MotionState","href":"Hi.NcParsers.Keywords.MotionState.html","topicHref":"Hi.NcParsers.Keywords.MotionState.html","topicUid":"Hi.NcParsers.Keywords.MotionState","type":"Class"},{"name":"PathSmoothing","href":"Hi.NcParsers.Keywords.PathSmoothing.html","topicHref":"Hi.NcParsers.Keywords.PathSmoothing.html","topicUid":"Hi.NcParsers.Keywords.PathSmoothing","type":"Class"},{"name":"PlaneSelect","href":"Hi.NcParsers.Keywords.PlaneSelect.html","topicHref":"Hi.NcParsers.Keywords.PlaneSelect.html","topicUid":"Hi.NcParsers.Keywords.PlaneSelect","type":"Class"},{"name":"Positioning","href":"Hi.NcParsers.Keywords.Positioning.html","topicHref":"Hi.NcParsers.Keywords.Positioning.html","topicUid":"Hi.NcParsers.Keywords.Positioning","type":"Class"},{"name":"ProgramEnd","href":"Hi.NcParsers.Keywords.ProgramEnd.html","topicHref":"Hi.NcParsers.Keywords.ProgramEnd.html","topicUid":"Hi.NcParsers.Keywords.ProgramEnd","type":"Class"},{"name":"ProgramStop","href":"Hi.NcParsers.Keywords.ProgramStop.html","topicHref":"Hi.NcParsers.Keywords.ProgramStop.html","topicUid":"Hi.NcParsers.Keywords.ProgramStop","type":"Class"},{"name":"RadiusCompensation","href":"Hi.NcParsers.Keywords.RadiusCompensation.html","topicHref":"Hi.NcParsers.Keywords.RadiusCompensation.html","topicUid":"Hi.NcParsers.Keywords.RadiusCompensation","type":"Class"},{"name":"SpindleControl","href":"Hi.NcParsers.Keywords.SpindleControl.html","topicHref":"Hi.NcParsers.Keywords.SpindleControl.html","topicUid":"Hi.NcParsers.Keywords.SpindleControl","type":"Class"},{"name":"SpindleOrientation","href":"Hi.NcParsers.Keywords.SpindleOrientation.html","topicHref":"Hi.NcParsers.Keywords.SpindleOrientation.html","topicUid":"Hi.NcParsers.Keywords.SpindleOrientation","type":"Class"},{"name":"SpindleSpeed","href":"Hi.NcParsers.Keywords.SpindleSpeed.html","topicHref":"Hi.NcParsers.Keywords.SpindleSpeed.html","topicUid":"Hi.NcParsers.Keywords.SpindleSpeed","type":"Class"},{"name":"SubProgramCall","href":"Hi.NcParsers.Keywords.SubProgramCall.html","topicHref":"Hi.NcParsers.Keywords.SubProgramCall.html","topicUid":"Hi.NcParsers.Keywords.SubProgramCall","type":"Class"},{"name":"SubProgramReturn","href":"Hi.NcParsers.Keywords.SubProgramReturn.html","topicHref":"Hi.NcParsers.Keywords.SubProgramReturn.html","topicUid":"Hi.NcParsers.Keywords.SubProgramReturn","type":"Class"},{"name":"TapeBoundary","href":"Hi.NcParsers.Keywords.TapeBoundary.html","topicHref":"Hi.NcParsers.Keywords.TapeBoundary.html","topicUid":"Hi.NcParsers.Keywords.TapeBoundary","type":"Class"},{"name":"TiltTransform","href":"Hi.NcParsers.Keywords.TiltTransform.html","topicHref":"Hi.NcParsers.Keywords.TiltTransform.html","topicUid":"Hi.NcParsers.Keywords.TiltTransform","type":"Class"},{"name":"ToolHeightCompensation","href":"Hi.NcParsers.Keywords.ToolHeightCompensation.html","topicHref":"Hi.NcParsers.Keywords.ToolHeightCompensation.html","topicUid":"Hi.NcParsers.Keywords.ToolHeightCompensation","type":"Class"},{"name":"Unit","href":"Hi.NcParsers.Keywords.Unit.html","topicHref":"Hi.NcParsers.Keywords.Unit.html","topicUid":"Hi.NcParsers.Keywords.Unit","type":"Class"},{"name":"Vars","href":"Hi.NcParsers.Keywords.Vars.html","topicHref":"Hi.NcParsers.Keywords.Vars.html","topicUid":"Hi.NcParsers.Keywords.Vars","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Fanuc","href":"Hi.NcParsers.Keywords.Fanuc.html","topicHref":"Hi.NcParsers.Keywords.Fanuc.html","topicUid":"Hi.NcParsers.Keywords.Fanuc","type":"Namespace","items":[{"name":"FanucKeywords","href":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html","topicHref":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html","topicUid":"Hi.NcParsers.Keywords.Fanuc.FanucKeywords","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Generic","href":"Hi.NcParsers.Keywords.Generic.html","topicHref":"Hi.NcParsers.Keywords.Generic.html","topicUid":"Hi.NcParsers.Keywords.Generic","type":"Namespace","items":[{"name":"IsoKeywords","href":"Hi.NcParsers.Keywords.Generic.IsoKeywords.html","topicHref":"Hi.NcParsers.Keywords.Generic.IsoKeywords.html","topicUid":"Hi.NcParsers.Keywords.Generic.IsoKeywords","type":"Class"},{"name":"MotionForm","href":"Hi.NcParsers.Keywords.Generic.MotionForm.html","topicHref":"Hi.NcParsers.Keywords.Generic.MotionForm.html","topicUid":"Hi.NcParsers.Keywords.Generic.MotionForm","type":"Class"}]},{"name":"Hi.NcParsers.Keywords.Heidenhain","href":"Hi.NcParsers.Keywords.Heidenhain.html","topicHref":"Hi.NcParsers.Keywords.Heidenhain.html","topicUid":"Hi.NcParsers.Keywords.Heidenhain","type":"Namespace","items":[{"name":"ICyclDef","href":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html","topicHref":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef.html","topicUid":"Hi.NcParsers.Keywords.Heidenhain.ICyclDef","type":"Interface"}]},{"name":"Hi.NcParsers.Keywords.Siemens","href":"Hi.NcParsers.Keywords.Siemens.html","topicHref":"Hi.NcParsers.Keywords.Siemens.html","topicUid":"Hi.NcParsers.Keywords.Siemens","type":"Namespace","items":[{"name":"SiemensKeywords","href":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html","topicHref":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html","topicUid":"Hi.NcParsers.Keywords.Siemens.SiemensKeywords","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs","href":"Hi.NcParsers.LogicSyntaxs.html","topicHref":"Hi.NcParsers.LogicSyntaxs.html","topicUid":"Hi.NcParsers.LogicSyntaxs","type":"Namespace","items":[{"name":"BackBoringSyntax","href":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.BackBoringSyntax","type":"Class"},{"name":"BareG28Behavior","href":"Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html","topicHref":"Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html","topicUid":"Hi.NcParsers.LogicSyntaxs.BareG28Behavior","type":"Enum"},{"name":"BoringCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax","type":"Class"},{"name":"CannedCycleResolveSyntax","href":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax","type":"Class"},{"name":"CircularMotionSyntax","href":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax","type":"Class"},{"name":"CoolantSyntax","href":"Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CoolantSyntax","type":"Class"},{"name":"CoordinateOffsetUtil","href":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil","type":"Class"},{"name":"DrillingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax","type":"Class"},{"name":"FanucPathSmoothingSyntax","href":"Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax","type":"Class"},{"name":"FeedrateSyntax","href":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FeedrateSyntax","type":"Class"},{"name":"FineBoringSyntax","href":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.FineBoringSyntax","type":"Class"},{"name":"G43p4RtcpSyntax","href":"Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax","type":"Class"},{"name":"G53p1RotaryPositionSyntax","href":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax","type":"Class"},{"name":"HighSpeedPeckCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.HighSpeedPeckCycleSyntax","type":"Class"},{"name":"IncrementalResolveSyntax","href":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax","type":"Class"},{"name":"IsoCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax","type":"Class"},{"name":"IsoG68RotationSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax","type":"Class"},{"name":"IsoG68p2TiltSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax","type":"Class"},{"name":"IsoLocalCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax","type":"Class"},{"name":"LinearMotionSyntax","href":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax","type":"Class"},{"name":"MachineCoordSelectSyntax","href":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax","type":"Class"},{"name":"McAbcCyclicPathSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax","type":"Class"},{"name":"McAbcSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcSyntax","type":"Class"},{"name":"McAbcXyzFallbackSyntax","href":"Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax","type":"Class"},{"name":"McXyzSyntax","href":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.McXyzSyntax","type":"Class"},{"name":"PeckDrillingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax","type":"Class"},{"name":"PivotTransformationSyntax","href":"Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax","type":"Class"},{"name":"PlaneSelectSyntax","href":"Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax","type":"Class"},{"name":"PositioningSyntax","href":"Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.PositioningSyntax","type":"Class"},{"name":"ProgramEndCleanSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax","type":"Class"},{"name":"ProgramEndSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax","type":"Class"},{"name":"ProgramStopSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax","type":"Class"},{"name":"ProgramXyzSyntax","href":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax","type":"Class"},{"name":"ProgramXyzUtil","href":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil","type":"Class"},{"name":"ReferenceReturnSyntax","href":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax","type":"Class"},{"name":"RotaryAxisUtil","href":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil","type":"Class"},{"name":"SpindleSpeedSyntax","href":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax","type":"Class"},{"name":"TappingCycleSyntax","href":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax","type":"Class"},{"name":"TiltTransformUtil","href":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html","topicHref":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html","topicUid":"Hi.NcParsers.LogicSyntaxs.TiltTransformUtil","type":"Class"},{"name":"ToolChangeSyntax","href":"Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax","type":"Class"},{"name":"ToolHeightOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax","type":"Class"},{"name":"UnitModeSyntax","href":"Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.UnitModeSyntax","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs.Heidenhain","href":"Hi.NcParsers.LogicSyntaxs.Heidenhain.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Heidenhain.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.LogicSyntaxs.Siemens","href":"Hi.NcParsers.LogicSyntaxs.Siemens.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Siemens.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Siemens","type":"Namespace","items":[{"name":"SiemensCoordinateOffsetSyntax","href":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html","topicHref":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html","topicUid":"Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs","type":"Namespace","items":[{"name":"BlockSkipSyntax","href":"Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax","type":"Class"},{"name":"CsScriptSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax","type":"Class"},{"name":"FlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FlagSyntax","type":"Class"},{"name":"FloatTagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax","type":"Class"},{"name":"HeadIndexSyntax","href":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax","type":"Class"},{"name":"IntegerTagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax","type":"Class"},{"name":"NamedVarAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax","type":"Class"},{"name":"NumberedFlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax","type":"Class"},{"name":"ParameterizedFlagSyntax","href":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax","type":"Class"},{"name":"ShrinkIfNoDecimalPointSyntax","href":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax","type":"Class"},{"name":"TagAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax","type":"Class"},{"name":"TagValueSyntax","href":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TagValueSyntax","type":"Class"},{"name":"TapeBoundarySyntax","href":"Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs","type":"Namespace","items":[{"name":"QuoteCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax","type":"Class"},{"name":"TailCommentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Fanuc","href":"Hi.NcParsers.ParsingSyntaxs.Fanuc.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Fanuc.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Fanuc","type":"Namespace","items":[{"name":"FanucGotoParsingSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax","type":"Class"},{"name":"FanucIfThenParsingSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax","type":"Class"},{"name":"FanucProgramNumberSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Heidenhain","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain","type":"Namespace","items":[{"name":"HeidenhainBlkFormSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax","type":"Class"},{"name":"HeidenhainCallSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax","type":"Class"},{"name":"HeidenhainCyclDefSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax","type":"Class"},{"name":"HeidenhainFnAssignmentSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax","type":"Class"},{"name":"HeidenhainLSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax","type":"Class"},{"name":"HeidenhainLblSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax","type":"Class"},{"name":"HeidenhainPlaneSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax","type":"Class"},{"name":"HeidenhainProgramSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax","type":"Class"},{"name":"HeidenhainToolCallSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax","type":"Class"}]},{"name":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs","type":"Namespace","items":[{"name":"HeidenhainDatumSettingSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax","type":"Class"},{"name":"HeidenhainDatumShiftSyntax","href":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html","topicHref":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html","topicUid":"Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax","type":"Class"}]},{"name":"Hi.NcParsers.PostLogicSyntaxs","href":"Hi.NcParsers.PostLogicSyntaxs.html","topicHref":"Hi.NcParsers.PostLogicSyntaxs.html","topicUid":"Hi.NcParsers.PostLogicSyntaxs","type":"Namespace","items":[{"name":"ModalCarrySyntax","href":"Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html","topicHref":"Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html","topicUid":"Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax","type":"Class"},{"name":"RadiusCompensationSyntax","href":"Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html","topicHref":"Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html","topicUid":"Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax","type":"Class"}]},{"name":"Hi.NcParsers.Segmenters","href":"Hi.NcParsers.Segmenters.html","topicHref":"Hi.NcParsers.Segmenters.html","topicUid":"Hi.NcParsers.Segmenters","type":"Namespace","items":[{"name":"HeidenhainSegmenter","href":"Hi.NcParsers.Segmenters.HeidenhainSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.HeidenhainSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.HeidenhainSegmenter","type":"Class"},{"name":"ISegmenter","href":"Hi.NcParsers.Segmenters.ISegmenter.html","topicHref":"Hi.NcParsers.Segmenters.ISegmenter.html","topicUid":"Hi.NcParsers.Segmenters.ISegmenter","type":"Interface"},{"name":"InlineDelimiterSegmenter","href":"Hi.NcParsers.Segmenters.InlineDelimiterSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.InlineDelimiterSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.InlineDelimiterSegmenter","type":"Class"},{"name":"SingleLineSegmenter","href":"Hi.NcParsers.Segmenters.SingleLineSegmenter.html","topicHref":"Hi.NcParsers.Segmenters.SingleLineSegmenter.html","topicUid":"Hi.NcParsers.Segmenters.SingleLineSegmenter","type":"Class"}]},{"name":"Hi.NcParsers.Semantics","href":"Hi.NcParsers.Semantics.html","topicHref":"Hi.NcParsers.Semantics.html","topicUid":"Hi.NcParsers.Semantics","type":"Namespace","items":[{"name":"ClLinearMotionSemantic","href":"Hi.NcParsers.Semantics.ClLinearMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.ClLinearMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.ClLinearMotionSemantic","type":"Class"},{"name":"CompoundMotionSemantic","href":"Hi.NcParsers.Semantics.CompoundMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.CompoundMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.CompoundMotionSemantic","type":"Class"},{"name":"CoolantSemantic","href":"Hi.NcParsers.Semantics.CoolantSemantic.html","topicHref":"Hi.NcParsers.Semantics.CoolantSemantic.html","topicUid":"Hi.NcParsers.Semantics.CoolantSemantic","type":"Class"},{"name":"CsScriptBeginSemantic","href":"Hi.NcParsers.Semantics.CsScriptBeginSemantic.html","topicHref":"Hi.NcParsers.Semantics.CsScriptBeginSemantic.html","topicUid":"Hi.NcParsers.Semantics.CsScriptBeginSemantic","type":"Class"},{"name":"CsScriptEndSemantic","href":"Hi.NcParsers.Semantics.CsScriptEndSemantic.html","topicHref":"Hi.NcParsers.Semantics.CsScriptEndSemantic.html","topicUid":"Hi.NcParsers.Semantics.CsScriptEndSemantic","type":"Class"},{"name":"CsScriptSemantic","href":"Hi.NcParsers.Semantics.CsScriptSemantic.html","topicHref":"Hi.NcParsers.Semantics.CsScriptSemantic.html","topicUid":"Hi.NcParsers.Semantics.CsScriptSemantic","type":"Class"},{"name":"INcSemantic","href":"Hi.NcParsers.Semantics.INcSemantic.html","topicHref":"Hi.NcParsers.Semantics.INcSemantic.html","topicUid":"Hi.NcParsers.Semantics.INcSemantic","type":"Interface"},{"name":"MachineCoordinateStepSemantic","href":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html","topicHref":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html","topicUid":"Hi.NcParsers.Semantics.MachineCoordinateStepSemantic","type":"Class"},{"name":"McArcMotionSemantic","href":"Hi.NcParsers.Semantics.McArcMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.McArcMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.McArcMotionSemantic","type":"Class"},{"name":"McLinearMotionSemantic","href":"Hi.NcParsers.Semantics.McLinearMotionSemantic.html","topicHref":"Hi.NcParsers.Semantics.McLinearMotionSemantic.html","topicUid":"Hi.NcParsers.Semantics.McLinearMotionSemantic","type":"Class"},{"name":"SpindleSpeedSemantic","href":"Hi.NcParsers.Semantics.SpindleSpeedSemantic.html","topicHref":"Hi.NcParsers.Semantics.SpindleSpeedSemantic.html","topicUid":"Hi.NcParsers.Semantics.SpindleSpeedSemantic","type":"Class"},{"name":"StrokeLimitCheckSemantic","href":"Hi.NcParsers.Semantics.StrokeLimitCheckSemantic.html","topicHref":"Hi.NcParsers.Semantics.StrokeLimitCheckSemantic.html","topicUid":"Hi.NcParsers.Semantics.StrokeLimitCheckSemantic","type":"Class"},{"name":"ToolChangeSemantic","href":"Hi.NcParsers.Semantics.ToolChangeSemantic.html","topicHref":"Hi.NcParsers.Semantics.ToolChangeSemantic.html","topicUid":"Hi.NcParsers.Semantics.ToolChangeSemantic","type":"Class"}]},{"name":"Hi.NcParsers.Syntaxs","href":"Hi.NcParsers.Syntaxs.html","topicHref":"Hi.NcParsers.Syntaxs.html","topicUid":"Hi.NcParsers.Syntaxs","type":"Namespace","items":[{"name":"BundleSyntax","href":"Hi.NcParsers.Syntaxs.BundleSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.BundleSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.BundleSyntax","type":"Class"},{"name":"FanucSyntaxUtil","href":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.FanucSyntaxUtil","type":"Class"},{"name":"GenericSyntaxKit","href":"Hi.NcParsers.Syntaxs.GenericSyntaxKit.html","topicHref":"Hi.NcParsers.Syntaxs.GenericSyntaxKit.html","topicUid":"Hi.NcParsers.Syntaxs.GenericSyntaxKit","type":"Class"},{"name":"HeidenhainSyntaxUtil","href":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil","type":"Class"},{"name":"IExpandingNcSyntax","href":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.IExpandingNcSyntax","type":"Interface"},{"name":"INcSyntax","href":"Hi.NcParsers.Syntaxs.INcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.INcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.INcSyntax","type":"Interface"},{"name":"ISituNcSyntax","href":"Hi.NcParsers.Syntaxs.ISituNcSyntax.html","topicHref":"Hi.NcParsers.Syntaxs.ISituNcSyntax.html","topicUid":"Hi.NcParsers.Syntaxs.ISituNcSyntax","type":"Interface"},{"name":"MazakSyntaxUtil","href":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.MazakSyntaxUtil","type":"Class"},{"name":"NcSyntaxUtil","href":"Hi.NcParsers.Syntaxs.NcSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.NcSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.NcSyntaxUtil","type":"Class"},{"name":"SiemensSyntaxUtil","href":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.SiemensSyntaxUtil","type":"Class"},{"name":"SyntaxPiece","href":"Hi.NcParsers.Syntaxs.SyntaxPiece.html","topicHref":"Hi.NcParsers.Syntaxs.SyntaxPiece.html","topicUid":"Hi.NcParsers.Syntaxs.SyntaxPiece","type":"Class"},{"name":"SyntaxStageKeys","href":"Hi.NcParsers.Syntaxs.SyntaxStageKeys.html","topicHref":"Hi.NcParsers.Syntaxs.SyntaxStageKeys.html","topicUid":"Hi.NcParsers.Syntaxs.SyntaxStageKeys","type":"Class"},{"name":"SyntecSyntaxUtil","href":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html","topicHref":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil.html","topicUid":"Hi.NcParsers.Syntaxs.SyntecSyntaxUtil","type":"Class"},{"name":"TagValue","href":"Hi.NcParsers.Syntaxs.TagValue.html","topicHref":"Hi.NcParsers.Syntaxs.TagValue.html","topicUid":"Hi.NcParsers.Syntaxs.TagValue","type":"Class"},{"name":"TransformationUtil","href":"Hi.NcParsers.Syntaxs.TransformationUtil.html","topicHref":"Hi.NcParsers.Syntaxs.TransformationUtil.html","topicUid":"Hi.NcParsers.Syntaxs.TransformationUtil","type":"Class"}]},{"name":"Hi.Numerical","href":"Hi.Numerical.html","topicHref":"Hi.Numerical.html","topicUid":"Hi.Numerical","type":"Namespace","items":[{"name":"CncBrand","href":"Hi.Numerical.CncBrand.html","topicHref":"Hi.Numerical.CncBrand.html","topicUid":"Hi.Numerical.CncBrand","type":"Enum"},{"name":"CommentMark","href":"Hi.Numerical.CommentMark.html","topicHref":"Hi.Numerical.CommentMark.html","topicUid":"Hi.Numerical.CommentMark","type":"Enum"},{"name":"CoolantMode","href":"Hi.Numerical.CoolantMode.html","topicHref":"Hi.Numerical.CoolantMode.html","topicUid":"Hi.Numerical.CoolantMode","type":"Enum"},{"name":"CoordinateInterpolationMode","href":"Hi.Numerical.CoordinateInterpolationMode.html","topicHref":"Hi.Numerical.CoordinateInterpolationMode.html","topicUid":"Hi.Numerical.CoordinateInterpolationMode","type":"Enum"},{"name":"FlexDictionaryUtil","href":"Hi.Numerical.FlexDictionaryUtil.html","topicHref":"Hi.Numerical.FlexDictionaryUtil.html","topicUid":"Hi.Numerical.FlexDictionaryUtil","type":"Class"},{"name":"HardNcComment","href":"Hi.Numerical.HardNcComment.html","topicHref":"Hi.Numerical.HardNcComment.html","topicUid":"Hi.Numerical.HardNcComment","type":"Class"},{"name":"HardNcEnv","href":"Hi.Numerical.HardNcEnv.html","topicHref":"Hi.Numerical.HardNcEnv.html","topicUid":"Hi.Numerical.HardNcEnv","type":"Class"},{"name":"HardNcLine","href":"Hi.Numerical.HardNcLine.html","topicHref":"Hi.Numerical.HardNcLine.html","topicUid":"Hi.Numerical.HardNcLine","type":"Class"},{"name":"HardNcUtil","href":"Hi.Numerical.HardNcUtil.html","topicHref":"Hi.Numerical.HardNcUtil.html","topicUid":"Hi.Numerical.HardNcUtil","type":"Class"},{"name":"HeidenhainCoordinateEntryDisplayee","href":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.HeidenhainCoordinateEntryDisplayee","type":"Class"},{"name":"IControlRunner","href":"Hi.Numerical.IControlRunner.html","topicHref":"Hi.Numerical.IControlRunner.html","topicUid":"Hi.Numerical.IControlRunner","type":"Interface"},{"name":"IFlexDictionaryHost","href":"Hi.Numerical.IFlexDictionaryHost-1.html","topicHref":"Hi.Numerical.IFlexDictionaryHost-1.html","topicUid":"Hi.Numerical.IFlexDictionaryHost`1","type":"Interface"},{"name":"IGetFeedrate","href":"Hi.Numerical.IGetFeedrate.html","topicHref":"Hi.Numerical.IGetFeedrate.html","topicUid":"Hi.Numerical.IGetFeedrate","type":"Interface"},{"name":"IGetSpindleSpeed","href":"Hi.Numerical.IGetSpindleSpeed.html","topicHref":"Hi.Numerical.IGetSpindleSpeed.html","topicUid":"Hi.Numerical.IGetSpindleSpeed","type":"Interface"},{"name":"ISetFeedrate","href":"Hi.Numerical.ISetFeedrate.html","topicHref":"Hi.Numerical.ISetFeedrate.html","topicUid":"Hi.Numerical.ISetFeedrate","type":"Interface"},{"name":"ISetSpindleSpeed","href":"Hi.Numerical.ISetSpindleSpeed.html","topicHref":"Hi.Numerical.ISetSpindleSpeed.html","topicUid":"Hi.Numerical.ISetSpindleSpeed","type":"Interface"},{"name":"IsoCoordinateEntryDisplayee","href":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicHref":"Hi.Numerical.IsoCoordinateEntryDisplayee.html","topicUid":"Hi.Numerical.IsoCoordinateEntryDisplayee","type":"Class"},{"name":"MechNcUtil","href":"Hi.Numerical.MechNcUtil.html","topicHref":"Hi.Numerical.MechNcUtil.html","topicUid":"Hi.Numerical.MechNcUtil","type":"Class"},{"name":"MillingToolOffsetTable","href":"Hi.Numerical.MillingToolOffsetTable.html","topicHref":"Hi.Numerical.MillingToolOffsetTable.html","topicUid":"Hi.Numerical.MillingToolOffsetTable","type":"Class"},{"name":"MillingToolOffsetTableRow","href":"Hi.Numerical.MillingToolOffsetTableRow.html","topicHref":"Hi.Numerical.MillingToolOffsetTableRow.html","topicUid":"Hi.Numerical.MillingToolOffsetTableRow","type":"Class"},{"name":"NcFlag","href":"Hi.Numerical.NcFlag.html","topicHref":"Hi.Numerical.NcFlag.html","topicUid":"Hi.Numerical.NcFlag","type":"Enum"},{"name":"NcFlagUtil","href":"Hi.Numerical.NcFlagUtil.html","topicHref":"Hi.Numerical.NcFlagUtil.html","topicUid":"Hi.Numerical.NcFlagUtil","type":"Class"},{"name":"NcGroup00","href":"Hi.Numerical.NcGroup00.html","topicHref":"Hi.Numerical.NcGroup00.html","topicUid":"Hi.Numerical.NcGroup00","type":"Enum"},{"name":"NcGroup01","href":"Hi.Numerical.NcGroup01.html","topicHref":"Hi.Numerical.NcGroup01.html","topicUid":"Hi.Numerical.NcGroup01","type":"Enum"},{"name":"NcGroup02","href":"Hi.Numerical.NcGroup02.html","topicHref":"Hi.Numerical.NcGroup02.html","topicUid":"Hi.Numerical.NcGroup02","type":"Enum"},{"name":"NcGroup03","href":"Hi.Numerical.NcGroup03.html","topicHref":"Hi.Numerical.NcGroup03.html","topicUid":"Hi.Numerical.NcGroup03","type":"Enum"},{"name":"NcGroup05","href":"Hi.Numerical.NcGroup05.html","topicHref":"Hi.Numerical.NcGroup05.html","topicUid":"Hi.Numerical.NcGroup05","type":"Enum"},{"name":"NcGroup06","href":"Hi.Numerical.NcGroup06.html","topicHref":"Hi.Numerical.NcGroup06.html","topicUid":"Hi.Numerical.NcGroup06","type":"Enum"},{"name":"NcGroup07","href":"Hi.Numerical.NcGroup07.html","topicHref":"Hi.Numerical.NcGroup07.html","topicUid":"Hi.Numerical.NcGroup07","type":"Enum"},{"name":"NcGroup08","href":"Hi.Numerical.NcGroup08.html","topicHref":"Hi.Numerical.NcGroup08.html","topicUid":"Hi.Numerical.NcGroup08","type":"Enum"},{"name":"NcGroup09","href":"Hi.Numerical.NcGroup09.html","topicHref":"Hi.Numerical.NcGroup09.html","topicUid":"Hi.Numerical.NcGroup09","type":"Enum"},{"name":"NcGroup10","href":"Hi.Numerical.NcGroup10.html","topicHref":"Hi.Numerical.NcGroup10.html","topicUid":"Hi.Numerical.NcGroup10","type":"Enum"},{"name":"NcGroup13","href":"Hi.Numerical.NcGroup13.html","topicHref":"Hi.Numerical.NcGroup13.html","topicUid":"Hi.Numerical.NcGroup13","type":"Enum"},{"name":"NcGroup14","href":"Hi.Numerical.NcGroup14.html","topicHref":"Hi.Numerical.NcGroup14.html","topicUid":"Hi.Numerical.NcGroup14","type":"Enum"},{"name":"NcGroup15","href":"Hi.Numerical.NcGroup15.html","topicHref":"Hi.Numerical.NcGroup15.html","topicUid":"Hi.Numerical.NcGroup15","type":"Enum"},{"name":"NcGroup16","href":"Hi.Numerical.NcGroup16.html","topicHref":"Hi.Numerical.NcGroup16.html","topicUid":"Hi.Numerical.NcGroup16","type":"Enum"},{"name":"NcGroup21","href":"Hi.Numerical.NcGroup21.html","topicHref":"Hi.Numerical.NcGroup21.html","topicUid":"Hi.Numerical.NcGroup21","type":"Enum"},{"name":"NcGroupAttribute","href":"Hi.Numerical.NcGroupAttribute.html","topicHref":"Hi.Numerical.NcGroupAttribute.html","topicUid":"Hi.Numerical.NcGroupAttribute","type":"Class"},{"name":"NcGroupHeidenhainM107M108","href":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicHref":"Hi.Numerical.NcGroupHeidenhainM107M108.html","topicUid":"Hi.Numerical.NcGroupHeidenhainM107M108","type":"Enum"},{"name":"NcGroupHeidenhainPlane","href":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicHref":"Hi.Numerical.NcGroupHeidenhainPlane.html","topicUid":"Hi.Numerical.NcGroupHeidenhainPlane","type":"Enum"},{"name":"NcGroupHeidenhainShortestRotaryPath","href":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicHref":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath.html","topicUid":"Hi.Numerical.NcGroupHeidenhainShortestRotaryPath","type":"Enum"},{"name":"NcGroupSpindleRotation","href":"Hi.Numerical.NcGroupSpindleRotation.html","topicHref":"Hi.Numerical.NcGroupSpindleRotation.html","topicUid":"Hi.Numerical.NcGroupSpindleRotation","type":"Enum"},{"name":"NcLifeCycleAttribute","href":"Hi.Numerical.NcLifeCycleAttribute.html","topicHref":"Hi.Numerical.NcLifeCycleAttribute.html","topicUid":"Hi.Numerical.NcLifeCycleAttribute","type":"Class"},{"name":"NcLifeCycleMode","href":"Hi.Numerical.NcLifeCycleMode.html","topicHref":"Hi.Numerical.NcLifeCycleMode.html","topicUid":"Hi.Numerical.NcLifeCycleMode","type":"Enum"},{"name":"NcNameAttribute","href":"Hi.Numerical.NcNameAttribute.html","topicHref":"Hi.Numerical.NcNameAttribute.html","topicUid":"Hi.Numerical.NcNameAttribute","type":"Class"},{"name":"NcNoteCache","href":"Hi.Numerical.NcNoteCache.html","topicHref":"Hi.Numerical.NcNoteCache.html","topicUid":"Hi.Numerical.NcNoteCache","type":"Class"},{"name":"NcProc","href":"Hi.Numerical.NcProc.html","topicHref":"Hi.Numerical.NcProc.html","topicUid":"Hi.Numerical.NcProc","type":"Class"},{"name":"NcWarningSceneEnum","href":"Hi.Numerical.NcWarningSceneEnum.html","topicHref":"Hi.Numerical.NcWarningSceneEnum.html","topicUid":"Hi.Numerical.NcWarningSceneEnum","type":"Enum"},{"name":"NumericUtil","href":"Hi.Numerical.NumericUtil.html","topicHref":"Hi.Numerical.NumericUtil.html","topicUid":"Hi.Numerical.NumericUtil","type":"Class"},{"name":"PolarEntry","href":"Hi.Numerical.PolarEntry.html","topicHref":"Hi.Numerical.PolarEntry.html","topicUid":"Hi.Numerical.PolarEntry","type":"Class"},{"name":"RadiusCompensationBuf","href":"Hi.Numerical.RadiusCompensationBuf.html","topicHref":"Hi.Numerical.RadiusCompensationBuf.html","topicUid":"Hi.Numerical.RadiusCompensationBuf","type":"Class"},{"name":"SourcedActEntry","href":"Hi.Numerical.SourcedActEntry.html","topicHref":"Hi.Numerical.SourcedActEntry.html","topicUid":"Hi.Numerical.SourcedActEntry","type":"Class"},{"name":"SpindleDirection","href":"Hi.Numerical.SpindleDirection.html","topicHref":"Hi.Numerical.SpindleDirection.html","topicUid":"Hi.Numerical.SpindleDirection","type":"Enum"},{"name":"SubStringKit","href":"Hi.Numerical.SubStringKit.html","topicHref":"Hi.Numerical.SubStringKit.html","topicUid":"Hi.Numerical.SubStringKit","type":"Class"},{"name":"SubStringKit.ActivationMode","href":"Hi.Numerical.SubStringKit.ActivationMode.html","topicHref":"Hi.Numerical.SubStringKit.ActivationMode.html","topicUid":"Hi.Numerical.SubStringKit.ActivationMode","type":"Enum"},{"name":"ToolConfigNotFoundException","href":"Hi.Numerical.ToolConfigNotFoundException.html","topicHref":"Hi.Numerical.ToolConfigNotFoundException.html","topicUid":"Hi.Numerical.ToolConfigNotFoundException","type":"Class"}]},{"name":"Hi.Numerical.Acts","href":"Hi.Numerical.Acts.html","topicHref":"Hi.Numerical.Acts.html","topicUid":"Hi.Numerical.Acts","type":"Namespace","items":[{"name":"ActActualTime","href":"Hi.Numerical.Acts.ActActualTime.html","topicHref":"Hi.Numerical.Acts.ActActualTime.html","topicUid":"Hi.Numerical.Acts.ActActualTime","type":"Class"},{"name":"ActClArc","href":"Hi.Numerical.Acts.ActClArc.html","topicHref":"Hi.Numerical.Acts.ActClArc.html","topicUid":"Hi.Numerical.Acts.ActClArc","type":"Class"},{"name":"ActClDerivedMcXyzabcContour","href":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.ActClDerivedMcXyzabcContour","type":"Class"},{"name":"ActClLinear","href":"Hi.Numerical.Acts.ActClLinear.html","topicHref":"Hi.Numerical.Acts.ActClLinear.html","topicUid":"Hi.Numerical.Acts.ActClLinear","type":"Class"},{"name":"ActClStep","href":"Hi.Numerical.Acts.ActClStep.html","topicHref":"Hi.Numerical.Acts.ActClStep.html","topicUid":"Hi.Numerical.Acts.ActClStep","type":"Class"},{"name":"ActClTeleport","href":"Hi.Numerical.Acts.ActClTeleport.html","topicHref":"Hi.Numerical.Acts.ActClTeleport.html","topicUid":"Hi.Numerical.Acts.ActClTeleport","type":"Class"},{"name":"ActCooling","href":"Hi.Numerical.Acts.ActCooling.html","topicHref":"Hi.Numerical.Acts.ActCooling.html","topicUid":"Hi.Numerical.Acts.ActCooling","type":"Class"},{"name":"ActData","href":"Hi.Numerical.Acts.ActData.html","topicHref":"Hi.Numerical.Acts.ActData.html","topicUid":"Hi.Numerical.Acts.ActData","type":"Class"},{"name":"ActDelay","href":"Hi.Numerical.Acts.ActDelay.html","topicHref":"Hi.Numerical.Acts.ActDelay.html","topicUid":"Hi.Numerical.Acts.ActDelay","type":"Class"},{"name":"ActFeedrate","href":"Hi.Numerical.Acts.ActFeedrate.html","topicHref":"Hi.Numerical.Acts.ActFeedrate.html","topicUid":"Hi.Numerical.Acts.ActFeedrate","type":"Class"},{"name":"ActHiddenStateChanged","href":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicHref":"Hi.Numerical.Acts.ActHiddenStateChanged.html","topicUid":"Hi.Numerical.Acts.ActHiddenStateChanged","type":"Class"},{"name":"ActIntentionalSkip","href":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicHref":"Hi.Numerical.Acts.ActIntentionalSkip.html","topicUid":"Hi.Numerical.Acts.ActIntentionalSkip","type":"Class"},{"name":"ActLineBegin","href":"Hi.Numerical.Acts.ActLineBegin.html","topicHref":"Hi.Numerical.Acts.ActLineBegin.html","topicUid":"Hi.Numerical.Acts.ActLineBegin","type":"Class"},{"name":"ActLineCsScript","href":"Hi.Numerical.Acts.ActLineCsScript.html","topicHref":"Hi.Numerical.Acts.ActLineCsScript.html","topicUid":"Hi.Numerical.Acts.ActLineCsScript","type":"Class"},{"name":"ActLineEnd","href":"Hi.Numerical.Acts.ActLineEnd.html","topicHref":"Hi.Numerical.Acts.ActLineEnd.html","topicUid":"Hi.Numerical.Acts.ActLineEnd","type":"Class"},{"name":"ActMcPolarLinearContour","href":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcPolarLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcPolarLinearContour","type":"Class"},{"name":"ActMcXyzLinearContour","href":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzLinearContour","type":"Class"},{"name":"ActMcXyzSpiralContour","href":"Hi.Numerical.Acts.ActMcXyzSpiralContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzSpiralContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzSpiralContour","type":"Class"},{"name":"ActMcXyzStep","href":"Hi.Numerical.Acts.ActMcXyzStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzStep","type":"Class"},{"name":"ActMcXyzabcLinearContour","href":"Hi.Numerical.Acts.ActMcXyzabcLinearContour.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcLinearContour.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcLinearContour","type":"Class"},{"name":"ActMcXyzabcStep","href":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicHref":"Hi.Numerical.Acts.ActMcXyzabcStep.html","topicUid":"Hi.Numerical.Acts.ActMcXyzabcStep","type":"Class"},{"name":"ActRapid","href":"Hi.Numerical.Acts.ActRapid.html","topicHref":"Hi.Numerical.Acts.ActRapid.html","topicUid":"Hi.Numerical.Acts.ActRapid","type":"Class"},{"name":"ActSpindleDirection","href":"Hi.Numerical.Acts.ActSpindleDirection.html","topicHref":"Hi.Numerical.Acts.ActSpindleDirection.html","topicUid":"Hi.Numerical.Acts.ActSpindleDirection","type":"Class"},{"name":"ActSpindleOrientation","href":"Hi.Numerical.Acts.ActSpindleOrientation.html","topicHref":"Hi.Numerical.Acts.ActSpindleOrientation.html","topicUid":"Hi.Numerical.Acts.ActSpindleOrientation","type":"Class"},{"name":"ActSpindleSpeed","href":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicHref":"Hi.Numerical.Acts.ActSpindleSpeed.html","topicUid":"Hi.Numerical.Acts.ActSpindleSpeed","type":"Class"},{"name":"ActToolingStep","href":"Hi.Numerical.Acts.ActToolingStep.html","topicHref":"Hi.Numerical.Acts.ActToolingStep.html","topicUid":"Hi.Numerical.Acts.ActToolingStep","type":"Class"},{"name":"ActToolingTeleport","href":"Hi.Numerical.Acts.ActToolingTeleport.html","topicHref":"Hi.Numerical.Acts.ActToolingTeleport.html","topicUid":"Hi.Numerical.Acts.ActToolingTeleport","type":"Class"},{"name":"ActUnknownSkip","href":"Hi.Numerical.Acts.ActUnknownSkip.html","topicHref":"Hi.Numerical.Acts.ActUnknownSkip.html","topicUid":"Hi.Numerical.Acts.ActUnknownSkip","type":"Class"},{"name":"ActUtil","href":"Hi.Numerical.Acts.ActUtil.html","topicHref":"Hi.Numerical.Acts.ActUtil.html","topicUid":"Hi.Numerical.Acts.ActUtil","type":"Class"},{"name":"IAct","href":"Hi.Numerical.Acts.IAct.html","topicHref":"Hi.Numerical.Acts.IAct.html","topicUid":"Hi.Numerical.Acts.IAct","type":"Interface"},{"name":"IActClMove","href":"Hi.Numerical.Acts.IActClMove.html","topicHref":"Hi.Numerical.Acts.IActClMove.html","topicUid":"Hi.Numerical.Acts.IActClMove","type":"Interface"},{"name":"IActDuration","href":"Hi.Numerical.Acts.IActDuration.html","topicHref":"Hi.Numerical.Acts.IActDuration.html","topicUid":"Hi.Numerical.Acts.IActDuration","type":"Interface"},{"name":"IActMachineStep","href":"Hi.Numerical.Acts.IActMachineStep.html","topicHref":"Hi.Numerical.Acts.IActMachineStep.html","topicUid":"Hi.Numerical.Acts.IActMachineStep","type":"Interface"},{"name":"IActMcXyzContour","href":"Hi.Numerical.Acts.IActMcXyzContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzContour","type":"Interface"},{"name":"IActMcXyzabcContour","href":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicHref":"Hi.Numerical.Acts.IActMcXyzabcContour.html","topicUid":"Hi.Numerical.Acts.IActMcXyzabcContour","type":"Interface"},{"name":"IActSkip","href":"Hi.Numerical.Acts.IActSkip.html","topicHref":"Hi.Numerical.Acts.IActSkip.html","topicUid":"Hi.Numerical.Acts.IActSkip","type":"Interface"},{"name":"IActTooling","href":"Hi.Numerical.Acts.IActTooling.html","topicHref":"Hi.Numerical.Acts.IActTooling.html","topicUid":"Hi.Numerical.Acts.IActTooling","type":"Interface"},{"name":"IWorkTimeAttrib","href":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicHref":"Hi.Numerical.Acts.IWorkTimeAttrib.html","topicUid":"Hi.Numerical.Acts.IWorkTimeAttrib","type":"Interface"},{"name":"IWorkTimeGetter","href":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeGetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeGetter","type":"Interface"},{"name":"IWorkTimeSetter","href":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicHref":"Hi.Numerical.Acts.IWorkTimeSetter.html","topicUid":"Hi.Numerical.Acts.IWorkTimeSetter","type":"Interface"},{"name":"StateActRunner","href":"Hi.Numerical.Acts.StateActRunner.html","topicHref":"Hi.Numerical.Acts.StateActRunner.html","topicUid":"Hi.Numerical.Acts.StateActRunner","type":"Class"}]},{"name":"Hi.Numerical.Args","href":"Hi.Numerical.Args.html","topicHref":"Hi.Numerical.Args.html","topicUid":"Hi.Numerical.Args","type":"Namespace","items":[{"name":"OrthogonalPlaneFlag","href":"Hi.Numerical.Args.OrthogonalPlaneFlag.html","topicHref":"Hi.Numerical.Args.OrthogonalPlaneFlag.html","topicUid":"Hi.Numerical.Args.OrthogonalPlaneFlag","type":"Enum"},{"name":"PolarModeDirEnum","href":"Hi.Numerical.Args.PolarModeDirEnum.html","topicHref":"Hi.Numerical.Args.PolarModeDirEnum.html","topicUid":"Hi.Numerical.Args.PolarModeDirEnum","type":"Enum"}]},{"name":"Hi.Numerical.FilePlayers","href":"Hi.Numerical.FilePlayers.html","topicHref":"Hi.Numerical.FilePlayers.html","topicUid":"Hi.Numerical.FilePlayers","type":"Namespace","items":[{"name":"CsvRunner","href":"Hi.Numerical.FilePlayers.CsvRunner.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunner.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunner","type":"Class"},{"name":"CsvRunnerConfig","href":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicHref":"Hi.Numerical.FilePlayers.CsvRunnerConfig.html","topicUid":"Hi.Numerical.FilePlayers.CsvRunnerConfig","type":"Class"},{"name":"HardNcRunner","href":"Hi.Numerical.FilePlayers.HardNcRunner.html","topicHref":"Hi.Numerical.FilePlayers.HardNcRunner.html","topicUid":"Hi.Numerical.FilePlayers.HardNcRunner","type":"Class"}]},{"name":"Hi.Numerical.MachiningMotionResolutionUtils","href":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils","type":"Namespace","items":[{"name":"FeedPerCycleMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerCycleMachiningMotionResolution","type":"Class"},{"name":"FeedPerToothMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FeedPerToothMachiningMotionResolution","type":"Class"},{"name":"FixedMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution","type":"Class"},{"name":"IMachiningMotionResolution","href":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicHref":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html","topicUid":"Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution","type":"Interface"}]},{"name":"Hi.Numerical.NcArgs","href":"Hi.Numerical.NcArgs.html","topicHref":"Hi.Numerical.NcArgs.html","topicUid":"Hi.Numerical.NcArgs","type":"Namespace","items":[{"name":"ArcNcArg","href":"Hi.Numerical.NcArgs.ArcNcArg.html","topicHref":"Hi.Numerical.NcArgs.ArcNcArg.html","topicUid":"Hi.Numerical.NcArgs.ArcNcArg","type":"Class"},{"name":"G28Arg","href":"Hi.Numerical.NcArgs.G28Arg.html","topicHref":"Hi.Numerical.NcArgs.G28Arg.html","topicUid":"Hi.Numerical.NcArgs.G28Arg","type":"Class"},{"name":"Group07NcArg","href":"Hi.Numerical.NcArgs.Group07NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group07NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group07NcArg","type":"Class"},{"name":"Group09NcArg","href":"Hi.Numerical.NcArgs.Group09NcArg.html","topicHref":"Hi.Numerical.NcArgs.Group09NcArg.html","topicUid":"Hi.Numerical.NcArgs.Group09NcArg","type":"Class"},{"name":"HeidenhainCycleDef7Arg","href":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainCycleDef7Arg","type":"Class"},{"name":"HeidenhainPlaneSpatialArg","href":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicHref":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg.html","topicUid":"Hi.Numerical.NcArgs.HeidenhainPlaneSpatialArg","type":"Class"},{"name":"IHeidenhainBlockCacheArg","href":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainBlockCacheArg","type":"Interface"},{"name":"IHeidenhainPlaneArg","href":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicHref":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg.html","topicUid":"Hi.Numerical.NcArgs.IHeidenhainPlaneArg","type":"Interface"},{"name":"ITiltPlaneNcArg","href":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicHref":"Hi.Numerical.NcArgs.ITiltPlaneNcArg.html","topicUid":"Hi.Numerical.NcArgs.ITiltPlaneNcArg","type":"Interface"},{"name":"NcArgCycle800","href":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicHref":"Hi.Numerical.NcArgs.NcArgCycle800.html","topicUid":"Hi.Numerical.NcArgs.NcArgCycle800","type":"Class"},{"name":"NcArgG68","href":"Hi.Numerical.NcArgs.NcArgG68.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68","type":"Class"},{"name":"NcArgG68p2","href":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicHref":"Hi.Numerical.NcArgs.NcArgG68p2.html","topicUid":"Hi.Numerical.NcArgs.NcArgG68p2","type":"Class"},{"name":"NcArgSiemensFrame","href":"Hi.Numerical.NcArgs.NcArgSiemensFrame.html","topicHref":"Hi.Numerical.NcArgs.NcArgSiemensFrame.html","topicUid":"Hi.Numerical.NcArgs.NcArgSiemensFrame","type":"Class"},{"name":"PausingNcArg","href":"Hi.Numerical.NcArgs.PausingNcArg.html","topicHref":"Hi.Numerical.NcArgs.PausingNcArg.html","topicUid":"Hi.Numerical.NcArgs.PausingNcArg","type":"Class"}]},{"name":"Hi.Numerical.StepSelectionUtils","href":"Hi.Numerical.StepSelectionUtils.html","topicHref":"Hi.Numerical.StepSelectionUtils.html","topicUid":"Hi.Numerical.StepSelectionUtils","type":"Namespace","items":[{"name":"AnchorMode","href":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicHref":"Hi.Numerical.StepSelectionUtils.AnchorMode.html","topicUid":"Hi.Numerical.StepSelectionUtils.AnchorMode","type":"Enum"},{"name":"BoundSelector","href":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelector.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelector","type":"Class"},{"name":"BoundSelectorHost","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorHost","type":"Class"},{"name":"BoundSelectorPair","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair","type":"Class"},{"name":"BoundSelectorPair.BoundLocale","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorPair.BoundLocale","type":"Enum"},{"name":"BoundSelectorStepSectionBundle","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle","type":"Class"},{"name":"BoundSelectorUtil","href":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicHref":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil.html","topicUid":"Hi.Numerical.StepSelectionUtils.BoundSelectorUtil","type":"Class"},{"name":"DistanceShift","href":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.DistanceShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.DistanceShift","type":"Class"},{"name":"IStepShift","href":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.IStepShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.IStepShift","type":"Interface"},{"name":"TimeShift","href":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicHref":"Hi.Numerical.StepSelectionUtils.TimeShift.html","topicUid":"Hi.Numerical.StepSelectionUtils.TimeShift","type":"Class"}]},{"name":"Hi.Numerical.Xyzabc","href":"Hi.Numerical.Xyzabc.html","topicHref":"Hi.Numerical.Xyzabc.html","topicUid":"Hi.Numerical.Xyzabc","type":"Namespace","items":[{"name":"Abc","href":"Hi.Numerical.Xyzabc.Abc.html","topicHref":"Hi.Numerical.Xyzabc.Abc.html","topicUid":"Hi.Numerical.Xyzabc.Abc","type":"Struct"},{"name":"CodeXyzabcChain","href":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.CodeXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.CodeXyzabcChain","type":"Class"},{"name":"GeneralXyzabcChain","href":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.GeneralXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.GeneralXyzabcChain","type":"Class"},{"name":"IGetMcXyzabc","href":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.IGetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.IGetMcXyzabc","type":"Interface"},{"name":"IGetXyzabcChain","href":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IGetXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IGetXyzabcChain","type":"Interface"},{"name":"IMachineKinematics","href":"Hi.Numerical.Xyzabc.IMachineKinematics.html","topicHref":"Hi.Numerical.Xyzabc.IMachineKinematics.html","topicUid":"Hi.Numerical.Xyzabc.IMachineKinematics","type":"Interface"},{"name":"ISetMcXyzabc","href":"Hi.Numerical.Xyzabc.ISetMcXyzabc.html","topicHref":"Hi.Numerical.Xyzabc.ISetMcXyzabc.html","topicUid":"Hi.Numerical.Xyzabc.ISetMcXyzabc","type":"Interface"},{"name":"IXyzabcChain","href":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.IXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.IXyzabcChain","type":"Interface"},{"name":"ReflectedXyzabcChain","href":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicHref":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html","topicUid":"Hi.Numerical.Xyzabc.ReflectedXyzabcChain","type":"Class"},{"name":"XyzabcSolver","href":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcSolver.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcSolver","type":"Class"},{"name":"XyzabcUtil","href":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicHref":"Hi.Numerical.Xyzabc.XyzabcUtil.html","topicUid":"Hi.Numerical.Xyzabc.XyzabcUtil","type":"Class"}]},{"name":"Hi.PanelModels","href":"Hi.PanelModels.html","topicHref":"Hi.PanelModels.html","topicUid":"Hi.PanelModels","type":"Namespace","items":[{"name":"HiKey","href":"Hi.PanelModels.HiKey.html","topicHref":"Hi.PanelModels.HiKey.html","topicUid":"Hi.PanelModels.HiKey","type":"Enum"},{"name":"HiKeyEvent","href":"Hi.PanelModels.HiKeyEvent.html","topicHref":"Hi.PanelModels.HiKeyEvent.html","topicUid":"Hi.PanelModels.HiKeyEvent","type":"Class"},{"name":"HiModifierKeys","href":"Hi.PanelModels.HiModifierKeys.html","topicHref":"Hi.PanelModels.HiModifierKeys.html","topicUid":"Hi.PanelModels.HiModifierKeys","type":"Enum"},{"name":"HiMouseButton","href":"Hi.PanelModels.HiMouseButton.html","topicHref":"Hi.PanelModels.HiMouseButton.html","topicUid":"Hi.PanelModels.HiMouseButton","type":"Enum"},{"name":"HiMouseButtonEvent","href":"Hi.PanelModels.HiMouseButtonEvent.html","topicHref":"Hi.PanelModels.HiMouseButtonEvent.html","topicUid":"Hi.PanelModels.HiMouseButtonEvent","type":"Class"},{"name":"HiMouseButtonMask","href":"Hi.PanelModels.HiMouseButtonMask.html","topicHref":"Hi.PanelModels.HiMouseButtonMask.html","topicUid":"Hi.PanelModels.HiMouseButtonMask","type":"Enum"},{"name":"HiMouseButtonMaskUtil","href":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicHref":"Hi.PanelModels.HiMouseButtonMaskUtil.html","topicUid":"Hi.PanelModels.HiMouseButtonMaskUtil","type":"Class"},{"name":"HiMouseMoveEvent","href":"Hi.PanelModels.HiMouseMoveEvent.html","topicHref":"Hi.PanelModels.HiMouseMoveEvent.html","topicUid":"Hi.PanelModels.HiMouseMoveEvent","type":"Class"},{"name":"HiMouseWheelEvent","href":"Hi.PanelModels.HiMouseWheelEvent.html","topicHref":"Hi.PanelModels.HiMouseWheelEvent.html","topicUid":"Hi.PanelModels.HiMouseWheelEvent","type":"Class"},{"name":"PanelModel","href":"Hi.PanelModels.PanelModel.html","topicHref":"Hi.PanelModels.PanelModel.html","topicUid":"Hi.PanelModels.PanelModel","type":"Class"}]},{"name":"Hi.Parallels","href":"Hi.Parallels.html","topicHref":"Hi.Parallels.html","topicUid":"Hi.Parallels","type":"Namespace","items":[{"name":"CurrentThreadTaskScheduler","href":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicHref":"Hi.Parallels.CurrentThreadTaskScheduler.html","topicUid":"Hi.Parallels.CurrentThreadTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskScheduler","href":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicHref":"Hi.Parallels.DistributedQueueTaskScheduler.html","topicUid":"Hi.Parallels.DistributedQueueTaskScheduler","type":"Class"},{"name":"DistributedQueueTaskStarter","href":"Hi.Parallels.DistributedQueueTaskStarter.html","topicHref":"Hi.Parallels.DistributedQueueTaskStarter.html","topicUid":"Hi.Parallels.DistributedQueueTaskStarter","type":"Class"},{"name":"LockUtil","href":"Hi.Parallels.LockUtil.html","topicHref":"Hi.Parallels.LockUtil.html","topicUid":"Hi.Parallels.LockUtil","type":"Class"},{"name":"PriorityTaskScheduler","href":"Hi.Parallels.PriorityTaskScheduler.html","topicHref":"Hi.Parallels.PriorityTaskScheduler.html","topicUid":"Hi.Parallels.PriorityTaskScheduler","type":"Class"},{"name":"QueueTaskScheduler","href":"Hi.Parallels.QueueTaskScheduler.html","topicHref":"Hi.Parallels.QueueTaskScheduler.html","topicUid":"Hi.Parallels.QueueTaskScheduler","type":"Class"},{"name":"ReaderWriterLockUtil","href":"Hi.Parallels.ReaderWriterLockUtil.html","topicHref":"Hi.Parallels.ReaderWriterLockUtil.html","topicUid":"Hi.Parallels.ReaderWriterLockUtil","type":"Class"},{"name":"SemaphoreUtil","href":"Hi.Parallels.SemaphoreUtil.html","topicHref":"Hi.Parallels.SemaphoreUtil.html","topicUid":"Hi.Parallels.SemaphoreUtil","type":"Class"},{"name":"ThreadSafeSet","href":"Hi.Parallels.ThreadSafeSet-1.html","topicHref":"Hi.Parallels.ThreadSafeSet-1.html","topicUid":"Hi.Parallels.ThreadSafeSet`1","type":"Class"}]},{"name":"Hi.Physics","href":"Hi.Physics.html","topicHref":"Hi.Physics.html","topicUid":"Hi.Physics","type":"Namespace","items":[{"name":"AmpPhase","href":"Hi.Physics.AmpPhase.html","topicHref":"Hi.Physics.AmpPhase.html","topicUid":"Hi.Physics.AmpPhase","type":"Class"},{"name":"CoatingMaterial","href":"Hi.Physics.CoatingMaterial.html","topicHref":"Hi.Physics.CoatingMaterial.html","topicUid":"Hi.Physics.CoatingMaterial","type":"Class"},{"name":"CoolantHeatCondition","href":"Hi.Physics.CoolantHeatCondition.html","topicHref":"Hi.Physics.CoolantHeatCondition.html","topicUid":"Hi.Physics.CoolantHeatCondition","type":"Class"},{"name":"CutterMaterial","href":"Hi.Physics.CutterMaterial.html","topicHref":"Hi.Physics.CutterMaterial.html","topicUid":"Hi.Physics.CutterMaterial","type":"Class"},{"name":"IGetThermalLayerList","href":"Hi.Physics.IGetThermalLayerList.html","topicHref":"Hi.Physics.IGetThermalLayerList.html","topicUid":"Hi.Physics.IGetThermalLayerList","type":"Interface"},{"name":"IStructureMaterial","href":"Hi.Physics.IStructureMaterial.html","topicHref":"Hi.Physics.IStructureMaterial.html","topicUid":"Hi.Physics.IStructureMaterial","type":"Interface"},{"name":"ISuccessivePhysicsBriefAccessor","href":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicHref":"Hi.Physics.ISuccessivePhysicsBriefAccessor.html","topicUid":"Hi.Physics.ISuccessivePhysicsBriefAccessor","type":"Interface"},{"name":"ISurfaceMaterial","href":"Hi.Physics.ISurfaceMaterial.html","topicHref":"Hi.Physics.ISurfaceMaterial.html","topicUid":"Hi.Physics.ISurfaceMaterial","type":"Interface"},{"name":"ITimeGetter","href":"Hi.Physics.ITimeGetter.html","topicHref":"Hi.Physics.ITimeGetter.html","topicUid":"Hi.Physics.ITimeGetter","type":"Interface"},{"name":"MillingTemperatureUtil","href":"Hi.Physics.MillingTemperatureUtil.html","topicHref":"Hi.Physics.MillingTemperatureUtil.html","topicUid":"Hi.Physics.MillingTemperatureUtil","type":"Class"},{"name":"SeqPhysicsBrief","href":"Hi.Physics.SeqPhysicsBrief.html","topicHref":"Hi.Physics.SeqPhysicsBrief.html","topicUid":"Hi.Physics.SeqPhysicsBrief","type":"Class"},{"name":"StructureMaterial","href":"Hi.Physics.StructureMaterial.html","topicHref":"Hi.Physics.StructureMaterial.html","topicUid":"Hi.Physics.StructureMaterial","type":"Class"},{"name":"TemperatureUtil","href":"Hi.Physics.TemperatureUtil.html","topicHref":"Hi.Physics.TemperatureUtil.html","topicUid":"Hi.Physics.TemperatureUtil","type":"Class"},{"name":"TemperatureVsHardness","href":"Hi.Physics.TemperatureVsHardness.html","topicHref":"Hi.Physics.TemperatureVsHardness.html","topicUid":"Hi.Physics.TemperatureVsHardness","type":"Class"},{"name":"ThermalLayer1D","href":"Hi.Physics.ThermalLayer1D.html","topicHref":"Hi.Physics.ThermalLayer1D.html","topicUid":"Hi.Physics.ThermalLayer1D","type":"Class"},{"name":"TimeSeriesUtil","href":"Hi.Physics.TimeSeriesUtil.html","topicHref":"Hi.Physics.TimeSeriesUtil.html","topicUid":"Hi.Physics.TimeSeriesUtil","type":"Class"},{"name":"TimeValue","href":"Hi.Physics.TimeValue.html","topicHref":"Hi.Physics.TimeValue.html","topicUid":"Hi.Physics.TimeValue","type":"Class"},{"name":"WorkpieceMaterial","href":"Hi.Physics.WorkpieceMaterial.html","topicHref":"Hi.Physics.WorkpieceMaterial.html","topicUid":"Hi.Physics.WorkpieceMaterial","type":"Class"}]},{"name":"Hi.SessionCommands","href":"Hi.SessionCommands.html","topicHref":"Hi.SessionCommands.html","topicUid":"Hi.SessionCommands","type":"Namespace","items":[{"name":"EnablingWrapper","href":"Hi.SessionCommands.EnablingWrapper.html","topicHref":"Hi.SessionCommands.EnablingWrapper.html","topicUid":"Hi.SessionCommands.EnablingWrapper","type":"Class"},{"name":"GeomDiffCommand","href":"Hi.SessionCommands.GeomDiffCommand.html","topicHref":"Hi.SessionCommands.GeomDiffCommand.html","topicUid":"Hi.SessionCommands.GeomDiffCommand","type":"Class"},{"name":"ISessionCommand","href":"Hi.SessionCommands.ISessionCommand.html","topicHref":"Hi.SessionCommands.ISessionCommand.html","topicUid":"Hi.SessionCommands.ISessionCommand","type":"Interface"},{"name":"ITitleCommand","href":"Hi.SessionCommands.ITitleCommand.html","topicHref":"Hi.SessionCommands.ITitleCommand.html","topicUid":"Hi.SessionCommands.ITitleCommand","type":"Interface"},{"name":"Lang","href":"Hi.SessionCommands.Lang.html","topicHref":"Hi.SessionCommands.Lang.html","topicUid":"Hi.SessionCommands.Lang","type":"Class"},{"name":"ListCommand","href":"Hi.SessionCommands.ListCommand.html","topicHref":"Hi.SessionCommands.ListCommand.html","topicUid":"Hi.SessionCommands.ListCommand","type":"Class"},{"name":"MachiningMotionResolutionCommand","href":"Hi.SessionCommands.MachiningMotionResolutionCommand.html","topicHref":"Hi.SessionCommands.MachiningMotionResolutionCommand.html","topicUid":"Hi.SessionCommands.MachiningMotionResolutionCommand","type":"Class"},{"name":"NcCodeCommand","href":"Hi.SessionCommands.NcCodeCommand.html","topicHref":"Hi.SessionCommands.NcCodeCommand.html","topicUid":"Hi.SessionCommands.NcCodeCommand","type":"Class"},{"name":"NcFileCommand","href":"Hi.SessionCommands.NcFileCommand.html","topicHref":"Hi.SessionCommands.NcFileCommand.html","topicUid":"Hi.SessionCommands.NcFileCommand","type":"Class"},{"name":"NcFileListCommand","href":"Hi.SessionCommands.NcFileListCommand.html","topicHref":"Hi.SessionCommands.NcFileListCommand.html","topicUid":"Hi.SessionCommands.NcFileListCommand","type":"Class"},{"name":"NcOptOptionCommand","href":"Hi.SessionCommands.NcOptOptionCommand.html","topicHref":"Hi.SessionCommands.NcOptOptionCommand.html","topicUid":"Hi.SessionCommands.NcOptOptionCommand","type":"Class"},{"name":"OptimizeToFilesCommand","href":"Hi.SessionCommands.OptimizeToFilesCommand.html","topicHref":"Hi.SessionCommands.OptimizeToFilesCommand.html","topicUid":"Hi.SessionCommands.OptimizeToFilesCommand","type":"Class"},{"name":"PostExecutionCommand","href":"Hi.SessionCommands.PostExecutionCommand.html","topicHref":"Hi.SessionCommands.PostExecutionCommand.html","topicUid":"Hi.SessionCommands.PostExecutionCommand","type":"Class"},{"name":"PreSettingCommand","href":"Hi.SessionCommands.PreSettingCommand.html","topicHref":"Hi.SessionCommands.PreSettingCommand.html","topicUid":"Hi.SessionCommands.PreSettingCommand","type":"Class"},{"name":"RecordRuntimeGeomActionEnum","href":"Hi.SessionCommands.RecordRuntimeGeomActionEnum.html","topicHref":"Hi.SessionCommands.RecordRuntimeGeomActionEnum.html","topicUid":"Hi.SessionCommands.RecordRuntimeGeomActionEnum","type":"Enum"},{"name":"RecordRuntimeGeomCommand","href":"Hi.SessionCommands.RecordRuntimeGeomCommand.html","topicHref":"Hi.SessionCommands.RecordRuntimeGeomCommand.html","topicUid":"Hi.SessionCommands.RecordRuntimeGeomCommand","type":"Class"},{"name":"ScriptCommand","href":"Hi.SessionCommands.ScriptCommand.html","topicHref":"Hi.SessionCommands.ScriptCommand.html","topicUid":"Hi.SessionCommands.ScriptCommand","type":"Class"},{"name":"SimpleSessionCommand","href":"Hi.SessionCommands.SimpleSessionCommand.html","topicHref":"Hi.SessionCommands.SimpleSessionCommand.html","topicUid":"Hi.SessionCommands.SimpleSessionCommand","type":"Class"},{"name":"WriteRuntimeGeomToStlCommand","href":"Hi.SessionCommands.WriteRuntimeGeomToStlCommand.html","topicHref":"Hi.SessionCommands.WriteRuntimeGeomToStlCommand.html","topicUid":"Hi.SessionCommands.WriteRuntimeGeomToStlCommand","type":"Class"},{"name":"WriteShotFilesCommand","href":"Hi.SessionCommands.WriteShotFilesCommand.html","topicHref":"Hi.SessionCommands.WriteShotFilesCommand.html","topicUid":"Hi.SessionCommands.WriteShotFilesCommand","type":"Class"},{"name":"WriteStepFilesCommand","href":"Hi.SessionCommands.WriteStepFilesCommand.html","topicHref":"Hi.SessionCommands.WriteStepFilesCommand.html","topicUid":"Hi.SessionCommands.WriteStepFilesCommand","type":"Class"}]},{"name":"Hi.SessionShellUtils","href":"Hi.SessionShellUtils.html","topicHref":"Hi.SessionShellUtils.html","topicUid":"Hi.SessionShellUtils","type":"Namespace","items":[{"name":"ISessionShell","href":"Hi.SessionShellUtils.ISessionShell.html","topicHref":"Hi.SessionShellUtils.ISessionShell.html","topicUid":"Hi.SessionShellUtils.ISessionShell","type":"Interface"},{"name":"JsAceAttribute","href":"Hi.SessionShellUtils.JsAceAttribute.html","topicHref":"Hi.SessionShellUtils.JsAceAttribute.html","topicUid":"Hi.SessionShellUtils.JsAceAttribute","type":"Class"}]},{"name":"Hi.SqliteUtils","href":"Hi.SqliteUtils.html","topicHref":"Hi.SqliteUtils.html","topicUid":"Hi.SqliteUtils","type":"Namespace","items":[{"name":"SqliteIdentityRole","href":"Hi.SqliteUtils.SqliteIdentityRole.html","topicHref":"Hi.SqliteUtils.SqliteIdentityRole.html","topicUid":"Hi.SqliteUtils.SqliteIdentityRole","type":"Class"},{"name":"SqliteIdentityStorage","href":"Hi.SqliteUtils.SqliteIdentityStorage.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage","type":"Class"},{"name":"SqliteIdentityStorage.RoleRow","href":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage.RoleRow","type":"Class"},{"name":"SqliteIdentityStorage.UserRow","href":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html","topicHref":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow.html","topicUid":"Hi.SqliteUtils.SqliteIdentityStorage.UserRow","type":"Class"},{"name":"SqliteIdentityUser","href":"Hi.SqliteUtils.SqliteIdentityUser.html","topicHref":"Hi.SqliteUtils.SqliteIdentityUser.html","topicUid":"Hi.SqliteUtils.SqliteIdentityUser","type":"Class"},{"name":"SqliteRoleStore","href":"Hi.SqliteUtils.SqliteRoleStore-1.html","topicHref":"Hi.SqliteUtils.SqliteRoleStore-1.html","topicUid":"Hi.SqliteUtils.SqliteRoleStore`1","type":"Class"},{"name":"SqliteStepStorage","href":"Hi.SqliteUtils.SqliteStepStorage.html","topicHref":"Hi.SqliteUtils.SqliteStepStorage.html","topicUid":"Hi.SqliteUtils.SqliteStepStorage","type":"Class"},{"name":"SqliteStepStorage.MillingStepLuggageRow","href":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html","topicHref":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow.html","topicUid":"Hi.SqliteUtils.SqliteStepStorage.MillingStepLuggageRow","type":"Class"},{"name":"SqliteUserStore","href":"Hi.SqliteUtils.SqliteUserStore-1.html","topicHref":"Hi.SqliteUtils.SqliteUserStore-1.html","topicUid":"Hi.SqliteUtils.SqliteUserStore`1","type":"Class"}]},{"name":"Hi.Test","href":"Hi.Test.html","topicHref":"Hi.Test.html","topicUid":"Hi.Test","type":"Namespace","items":[{"name":"TestCollision","href":"Hi.Test.TestCollision.html","topicHref":"Hi.Test.TestCollision.html","topicUid":"Hi.Test.TestCollision","type":"Class"}]},{"name":"Hi.UiExtensions","href":"Hi.UiExtensions.html","topicHref":"Hi.UiExtensions.html","topicUid":"Hi.UiExtensions","type":"Namespace","items":[{"name":"ChartBoundary","href":"Hi.UiExtensions.ChartBoundary.html","topicHref":"Hi.UiExtensions.ChartBoundary.html","topicUid":"Hi.UiExtensions.ChartBoundary","type":"Class"},{"name":"ChartBoundaryEnum","href":"Hi.UiExtensions.ChartBoundaryEnum.html","topicHref":"Hi.UiExtensions.ChartBoundaryEnum.html","topicUid":"Hi.UiExtensions.ChartBoundaryEnum","type":"Enum"},{"name":"NativeVisibility","href":"Hi.UiExtensions.NativeVisibility.html","topicHref":"Hi.UiExtensions.NativeVisibility.html","topicUid":"Hi.UiExtensions.NativeVisibility","type":"Enum"},{"name":"UiUtil","href":"Hi.UiExtensions.UiUtil.html","topicHref":"Hi.UiExtensions.UiUtil.html","topicUid":"Hi.UiExtensions.UiUtil","type":"Class"},{"name":"UiUtil.InvokeFunc","href":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicHref":"Hi.UiExtensions.UiUtil.InvokeFunc.html","topicUid":"Hi.UiExtensions.UiUtil.InvokeFunc","type":"Delegate"}]},{"name":"Hi.UniversalNc","href":"Hi.UniversalNc.html","topicHref":"Hi.UniversalNc.html","topicUid":"Hi.UniversalNc","type":"Namespace","items":[{"name":"Lang","href":"Hi.UniversalNc.Lang.html","topicHref":"Hi.UniversalNc.Lang.html","topicUid":"Hi.UniversalNc.Lang","type":"Class"}]},{"name":"Hi.Vibrations","href":"Hi.Vibrations.html","topicHref":"Hi.Vibrations.html","topicUid":"Hi.Vibrations","type":"Namespace","items":[{"name":"AngularVelocityUtil","href":"Hi.Vibrations.AngularVelocityUtil.html","topicHref":"Hi.Vibrations.AngularVelocityUtil.html","topicUid":"Hi.Vibrations.AngularVelocityUtil","type":"Class"},{"name":"ForceAccelAmpPhase","href":"Hi.Vibrations.ForceAccelAmpPhase.html","topicHref":"Hi.Vibrations.ForceAccelAmpPhase.html","topicUid":"Hi.Vibrations.ForceAccelAmpPhase","type":"Class"},{"name":"ForceAccelFourierSeries","href":"Hi.Vibrations.ForceAccelFourierSeries.html","topicHref":"Hi.Vibrations.ForceAccelFourierSeries.html","topicUid":"Hi.Vibrations.ForceAccelFourierSeries","type":"Class"},{"name":"ForceAccelShot","href":"Hi.Vibrations.ForceAccelShot.html","topicHref":"Hi.Vibrations.ForceAccelShot.html","topicUid":"Hi.Vibrations.ForceAccelShot","type":"Class"},{"name":"ForceAccelUtil","href":"Hi.Vibrations.ForceAccelUtil.html","topicHref":"Hi.Vibrations.ForceAccelUtil.html","topicUid":"Hi.Vibrations.ForceAccelUtil","type":"Class"},{"name":"IAngularVelocityOwner","href":"Hi.Vibrations.IAngularVelocityOwner.html","topicHref":"Hi.Vibrations.IAngularVelocityOwner.html","topicUid":"Hi.Vibrations.IAngularVelocityOwner","type":"Interface"},{"name":"VibrationUtil","href":"Hi.Vibrations.VibrationUtil.html","topicHref":"Hi.Vibrations.VibrationUtil.html","topicUid":"Hi.Vibrations.VibrationUtil","type":"Class"},{"name":"WAmpPhase","href":"Hi.Vibrations.WAmpPhase.html","topicHref":"Hi.Vibrations.WAmpPhase.html","topicUid":"Hi.Vibrations.WAmpPhase","type":"Class"},{"name":"WAmpPhaseXyzTransformation","href":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicHref":"Hi.Vibrations.WAmpPhaseXyzTransformation.html","topicUid":"Hi.Vibrations.WAmpPhaseXyzTransformation","type":"Class"}]},{"name":"Hi.WinForm.Disp","href":"Hi.WinForm.Disp.html","topicHref":"Hi.WinForm.Disp.html","topicUid":"Hi.WinForm.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WinForm.Disp.RenderingCanvas.html","topicHref":"Hi.WinForm.Disp.RenderingCanvas.html","topicUid":"Hi.WinForm.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingForm","href":"Hi.WinForm.Disp.RenderingForm.html","topicHref":"Hi.WinForm.Disp.RenderingForm.html","topicUid":"Hi.WinForm.Disp.RenderingForm","type":"Class"}]},{"name":"Hi.WpfPlus.Disp","href":"Hi.WpfPlus.Disp.html","topicHref":"Hi.WpfPlus.Disp.html","topicUid":"Hi.WpfPlus.Disp","type":"Namespace","items":[{"name":"RenderingCanvas","href":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicHref":"Hi.WpfPlus.Disp.RenderingCanvas.html","topicUid":"Hi.WpfPlus.Disp.RenderingCanvas","type":"Class"},{"name":"RenderingWindow","href":"Hi.WpfPlus.Disp.RenderingWindow.html","topicHref":"Hi.WpfPlus.Disp.RenderingWindow.html","topicUid":"Hi.WpfPlus.Disp.RenderingWindow","type":"Class"},{"name":"WpfDispUtil","href":"Hi.WpfPlus.Disp.WpfDispUtil.html","topicHref":"Hi.WpfPlus.Disp.WpfDispUtil.html","topicUid":"Hi.WpfPlus.Disp.WpfDispUtil","type":"Class"}]},{"name":"HiMachining.Milling","href":"HiMachining.Milling.html","topicHref":"HiMachining.Milling.html","topicUid":"HiMachining.Milling","type":"Namespace","items":[{"name":"ClMillingDevice","href":"HiMachining.Milling.ClMillingDevice.html","topicHref":"HiMachining.Milling.ClMillingDevice.html","topicUid":"HiMachining.Milling.ClMillingDevice","type":"Class"}]},{"name":"HiNc.Grpcs","href":"HiNc.Grpcs.html","topicHref":"HiNc.Grpcs.html","topicUid":"HiNc.Grpcs","type":"Namespace","items":[{"name":"MachiningProjectGrpcServer","href":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicHref":"HiNc.Grpcs.MachiningProjectGrpcServer.html","topicUid":"HiNc.Grpcs.MachiningProjectGrpcServer","type":"Class"}]},{"name":"numerical","href":"numerical.html","topicHref":"numerical.html","topicUid":"numerical","type":"Namespace","items":[{"name":"Empty","href":"numerical.Empty.html","topicHref":"numerical.Empty.html","topicUid":"numerical.Empty","type":"Class"},{"name":"GrpcCsvRowDictionary","href":"numerical.GrpcCsvRowDictionary.html","topicHref":"numerical.GrpcCsvRowDictionary.html","topicUid":"numerical.GrpcCsvRowDictionary","type":"Class"},{"name":"GrpcNcStep","href":"numerical.GrpcNcStep.html","topicHref":"numerical.GrpcNcStep.html","topicUid":"numerical.GrpcNcStep","type":"Class"},{"name":"NumericalReflection","href":"numerical.NumericalReflection.html","topicHref":"numerical.NumericalReflection.html","topicUid":"numerical.NumericalReflection","type":"Class"},{"name":"NumericalService","href":"numerical.NumericalService.html","topicHref":"numerical.NumericalService.html","topicUid":"numerical.NumericalService","type":"Class"},{"name":"NumericalService.NumericalServiceBase","href":"numerical.NumericalService.NumericalServiceBase.html","topicHref":"numerical.NumericalService.NumericalServiceBase.html","topicUid":"numerical.NumericalService.NumericalServiceBase","type":"Class"},{"name":"NumericalService.NumericalServiceClient","href":"numerical.NumericalService.NumericalServiceClient.html","topicHref":"numerical.NumericalService.NumericalServiceClient.html","topicUid":"numerical.NumericalService.NumericalServiceClient","type":"Class"},{"name":"UniversalNcReflection","href":"numerical.UniversalNcReflection.html","topicHref":"numerical.UniversalNcReflection.html","topicUid":"numerical.UniversalNcReflection","type":"Class"},{"name":"UniversalNcService","href":"numerical.UniversalNcService.html","topicHref":"numerical.UniversalNcService.html","topicUid":"numerical.UniversalNcService","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceBase","href":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceBase.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceBase","type":"Class"},{"name":"UniversalNcService.UniversalNcServiceClient","href":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicHref":"numerical.UniversalNcService.UniversalNcServiceClient.html","topicUid":"numerical.UniversalNcService.UniversalNcServiceClient","type":"Class"}]}],"memberLayout":"SamePage"} diff --git a/App/wwwroot/HiAPI-docsite/fundamentals/common/xml-io.html b/App/wwwroot/HiAPI-docsite/fundamentals/common/xml-io.html index 6fd5a6a1..e02a45ff 100644 --- a/App/wwwroot/HiAPI-docsite/fundamentals/common/xml-io.html +++ b/App/wwwroot/HiAPI-docsite/fundamentals/common/xml-io.html @@ -107,7 +107,7 @@
    static BallApt()
     {
         // Register to the <see cref="XFactory.Default"/>.
    -    XFactory.Regs.Add(XName, (xml,baseDirectory, relFile, progress, res) => new BallApt(xml));
    +    XFactory.Generators.Add(XName, (xml,baseDirectory, relFile, progress, res) => new BallApt(xml));
     }
     

    IProgress Threading

    The IProgress<object> parameter is threaded through the entire deserialization chain. When a class constructor calls XFactory to deserialize child objects, it passes the same progress instance:

    diff --git a/App/wwwroot/HiAPI-docsite/index.json b/App/wwwroot/HiAPI-docsite/index.json index 0906a6f9..d4f55881 100644 --- a/App/wwwroot/HiAPI-docsite/index.json +++ b/App/wwwroot/HiAPI-docsite/index.json @@ -387,7 +387,7 @@ "api/Hi.Common.Collections.LazyLinkedList-1.html": { "href": "api/Hi.Common.Collections.LazyLinkedList-1.html", "title": "Class LazyLinkedList | HiAPI-C# 2025", - "summary": "Class LazyLinkedList Namespace Hi.Common.Collections Assembly HiGeom.dll A singly-growable linked list that can lazily materialize nodes from an IEnumerable source. Without a source it behaves like a regular append-only linked list. With a source, nodes are pulled on demand when Next is accessed on the tail, or when First is accessed on an empty list. public class LazyLinkedList : IEnumerable, IEnumerable, IDisposable Type Parameters T Inheritance object LazyLinkedList Implements IEnumerable IEnumerable IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) StringUtil.ToDotSplitedString(IEnumerable) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples // Lazy: nodes materialize as you walk .Next using var list = new LazyLinkedList(File.ReadLines(path)); var node = list.First; // materializes line 0 var next = node.Next; // materializes line 1 // Manual: just like a regular linked list var list2 = new LazyLinkedList(); list2.AddLast(1); list2.AddLast(2); Constructors LazyLinkedList() Creates an empty list (no lazy source). public LazyLinkedList() LazyLinkedList(IEnumerable) Creates a list backed by a lazy source. Nodes are materialized on demand via Next or First. public LazyLinkedList(IEnumerable source) Parameters source IEnumerable Properties Count Number of nodes currently materialized in the list. public int Count { get; } Property Value int ExhaustedLast Forces full materialization of the lazy source and returns the last node. Walks the source to completion (no-op if already exhausted), then returns Last. Use when callers need the definitive tail at this point in time (e.g. as a stable predecessor before AppendSource(IEnumerable)). public LazyLinkedListNode ExhaustedLast { get; } Property Value LazyLinkedListNode First Gets the first node, materializing from source if the list is empty. public LazyLinkedListNode First { get; } Property Value LazyLinkedListNode IsExhausted Whether all items from the source have been materialized (or no source was provided). public bool IsExhausted { get; } Property Value bool Last Gets the last materialized node in the list. public LazyLinkedListNode Last { get; } Property Value LazyLinkedListNode Methods AddLast(T) Appends a new node with the specified value to the end of the list. public LazyLinkedListNode AddLast(T value) Parameters value T The value to add. Returns LazyLinkedListNode The newly created node. AppendSource(IEnumerable) Appends a new lazy source after the current source. The existing source's remaining items (if any) are drained first, then the new source is yielded. Re-opens the list for further on-demand materialization, so calling Next on the prior tail materializes the next item and links Previous across the boundary. public void AppendSource(IEnumerable src) Parameters src IEnumerable The new source to append. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() GetEnumerator() Returns an enumerator that iterates through the collection. public IEnumerator GetEnumerator() Returns IEnumerator An enumerator that can be used to iterate through the collection. PrependSource(IEnumerable) Prepends a new source ahead of the current source's remaining items. On the next on-demand materialization (triggered by Next on the present tail or First on an empty list), src is yielded first; once exhausted, the previous source's untouched tail resumes. The materialized prefix of the list — including the present tail — is unaffected, so this is the natural way to splice extra items in immediately after the current tail (for example, inlining an M98 subprogram's blocks after the host node so the rest of the pipeline picks them up via ordinary walkNode.Next traversal). public void PrependSource(IEnumerable src) Parameters src IEnumerable The source to insert ahead of the remaining items. Remarks Constraint: the caller must treat the present tail as the splice point. There is no way to prepend “after some interior node” — the prepended items are queued ahead of whatever the current source would have produced next. Use this when the splice point coincides with the tail at the moment of the call (which is how SoftNcRunner's pipeline drives node-by-node lazy materialization in lock-step with syntax/semantic processing)." + "summary": "Class LazyLinkedList Namespace Hi.Common.Collections Assembly HiGeom.dll A singly-growable linked list that can lazily materialize nodes from an IEnumerable source. Without a source it behaves like a regular append-only linked list. With a source, nodes are pulled on demand when Next is accessed on the tail, or when First is accessed on an empty list. public class LazyLinkedList : IEnumerable, IEnumerable, IDisposable Type Parameters T Inheritance object LazyLinkedList Implements IEnumerable IEnumerable IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) StringUtil.ToDotSplitedString(IEnumerable) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples // Lazy: nodes materialize as you walk .Next using var list = new LazyLinkedList(File.ReadLines(path)); var node = list.First; // materializes line 0 var next = node.Next; // materializes line 1 // Manual: just like a regular linked list var list2 = new LazyLinkedList(); list2.AddLast(1); list2.AddLast(2); Constructors LazyLinkedList() Creates an empty list (no lazy source). public LazyLinkedList() LazyLinkedList(IEnumerable) Creates a list backed by a lazy source. Nodes are materialized on demand via Next or First. public LazyLinkedList(IEnumerable source) Parameters source IEnumerable Properties Count Number of nodes currently materialized in the list. public int Count { get; } Property Value int ExhaustedLast Forces full materialization of the lazy source and returns the last node. Walks the source to completion (no-op if already exhausted), then returns Last. Use when callers need the definitive tail at this point in time (e.g. as a stable predecessor before AppendSource(IEnumerable)). public LazyLinkedListNode ExhaustedLast { get; } Property Value LazyLinkedListNode First Gets the first node, materializing from source if the list is empty. public LazyLinkedListNode First { get; } Property Value LazyLinkedListNode IsExhausted Whether all items from the source have been materialized (or no source was provided). public bool IsExhausted { get; } Property Value bool Last Gets the last materialized node in the list. public LazyLinkedListNode Last { get; } Property Value LazyLinkedListNode Methods AddLast(T) Appends a new node with the specified value to the end of the list. public LazyLinkedListNode AddLast(T value) Parameters value T The value to add. Returns LazyLinkedListNode The newly created node. AppendSource(IEnumerable) Appends a new lazy source after the current source. The existing source's remaining items (if any) are drained first, then the new source is yielded. Re-opens the list for further on-demand materialization, so calling Next on the prior tail materializes the next item and links Previous across the boundary. public void AppendSource(IEnumerable src) Parameters src IEnumerable The new source to append. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() GetEnumerator() Returns an enumerator that iterates through the collection. public IEnumerator GetEnumerator() Returns IEnumerator An enumerator that can be used to iterate through the collection. PrependSource(IEnumerable) Prepends a new source ahead of the current source's remaining items. On the next on-demand materialization (triggered by Next on the present tail or First on an empty list), src is yielded first; once exhausted, the previous source's untouched tail resumes. The materialized prefix of the list — including the present tail — is unaffected, so this is the natural way to splice extra items in immediately after the current tail (for example, inlining an M98 subprogram's blocks after the host node so the rest of the pipeline picks them up via ordinary walkNode.Next traversal). public void PrependSource(IEnumerable src) Parameters src IEnumerable The source to insert ahead of the remaining items. Remarks Constraint: the caller must treat the present tail as the splice point. There is no way to prepend “after some interior node” — the prepended items are queued ahead of whatever the current source would have produced next. Use this when the splice point coincides with the tail at the moment of the call (which is how SoftNcRunner's pipeline drives node-by-node lazy materialization in lock-step with syntax/semantic processing). ReplaceSource(IEnumerable) Replaces the current source's remaining items with src. Discards anything the old source had queued (it is disposed); the next on-demand materialization (triggered by Next on the present tail or First on an empty list) yields from src only. Already-materialized nodes — including the present tail — are unaffected, so this is the natural way to redirect future execution from the current tail onwards (for example, a GOTO that re-segments the file from the target N{seq} line: the GOTO host block stays materialized as the predecessor, and the post-target re-segmentation becomes the new source while the original between-here- and-EOF source is dropped). public void ReplaceSource(IEnumerable src) Parameters src IEnumerable The new source. Yielded from on the next materialization. Remarks Constraint: same as PrependSource(IEnumerable) — the present tail is the splice point. Differs from PrependSource(IEnumerable) in that the old source's untouched tail is NOT preserved after src runs out; ReplaceSource(IEnumerable) drops it. Use PrependSource(IEnumerable) for inline expansion (M98 / G65) where the caller's tail must resume after the inlined body; use ReplaceSource(IEnumerable) for control-flow redirection (GOTO, M99 P{seq}) where the original tail is no longer reachable." }, "api/Hi.Common.Collections.LazyLinkedListNode-1.html": { "href": "api/Hi.Common.Collections.LazyLinkedListNode-1.html", @@ -1004,10 +1004,10 @@ "title": "Delegate SetFileDelegate | HiAPI-C# 2025", "summary": "Delegate SetFileDelegate Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Delegate for setting the file path during XML operations. public delegate void SetFileDelegate(string file) Parameters file string The file path to set Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" }, - "api/Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html": { - "href": "api/Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html", - "title": "Delegate XFactory.GenByXElementDelegate | HiAPI-C# 2025", - "summary": "Delegate XFactory.GenByXElementDelegate Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Delegate for generating objects from XML elements with relative file path. public delegate object XFactory.GenByXElementDelegate(XElement src, string baseDirectory, string relFile, IProgress progress, object[] res) Parameters src XElement The source XML element baseDirectory string The base directory for resolving paths relFile string The relative file path progress IProgress Progress reporter for the XML parsing chain res object[] Additional parameters for generation Returns object The generated object Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Note that the design pattern of seperating BaseDirectory and RelativePath is for easy data package moving. The pattern assume the BaseDirectory can be changed if all the content in the BaseDirectory is changed to the destinate directory." + "api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html": { + "href": "api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html", + "title": "Delegate XFactory.XGeneratorDelegate | HiAPI-C# 2025", + "summary": "Delegate XFactory.XGeneratorDelegate Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Delegate for generating objects from XML elements with relative file path. public delegate object XFactory.XGeneratorDelegate(XElement src, string baseDirectory, string relFile, IProgress progress, object[] res) Parameters src XElement The source XML element baseDirectory string The base directory for resolving paths relFile string The relative file path progress IProgress Progress reporter for the XML parsing chain res object[] Additional parameters for generation Returns object The generated object Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Note that the design pattern of seperating BaseDirectory and RelativePath is for easy data package moving. The pattern assume the BaseDirectory can be changed if all the content in the BaseDirectory is changed to the destinate directory." }, "api/Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html": { "href": "api/Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html", @@ -1017,7 +1017,7 @@ "api/Hi.Common.XmlUtils.XFactory.html": { "href": "api/Hi.Common.XmlUtils.XFactory.html", "title": "Class XFactory | HiAPI-C# 2025", - "summary": "Class XFactory Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Factory class for generating objects from XML elements using registered generator functions. public static class XFactory Inheritance object XFactory Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Generator functions must be added to Regs to enable the factory to create objects from XML. Properties Regs Gets or sets the dictionary mapping XML element names to generator functions with relative file path. public static Dictionary Regs { get; set; } Property Value Dictionary Methods GenByChild(XElement, string, IProgress, bool, object[]) Generates an object of type T from the first child element of the provided XML element. This overload discards the relative file path output. public static T GenByChild(XElement src, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement baseDirectory string progress IProgress enableRebase bool res object[] Returns T Type Parameters T GenByChild(XElement, string, out string, IProgress, bool, object[]) Generates an object of type T from the first child element of the provided XML element. public static T GenByChild(XElement src, string baseDirectory, out string relFile, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement The parent XML element containing the child to process baseDirectory string The base directory for resolving paths relFile string Output parameter that receives the relative file path if src is a file reference, or null otherwise progress IProgress Progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location res object[] Additional parameters for generation Returns T The generated object of type T, or null if src is null Type Parameters T The type of object to generate GenByFile(string, string, IProgress, bool, object[]) Generates an object of type T from an XML file. public static T GenByFile(string baseDirectory, string relFile, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters baseDirectory string The base directory for resolving paths relFile string The relative file path to the XML file progress IProgress Progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location res object[] Additional parameters for generation Returns T The generated object of type T, or null if relFile is null Type Parameters T The type of object to generate GenFileRefSourceByChild(XElement, string, IProgress, bool, object[]) Generates a FileRefSource from the first child element of the provided XML element. public static FileRefSource GenFileRefSourceByChild(XElement src, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters src XElement baseDirectory string progress IProgress enableRebase bool res object[] Returns FileRefSource Type Parameters T GenFileRefSourceByFile(string, string, IProgress, bool, object[]) Generates a FileRefSource from an XML file. public static FileRefSource GenFileRefSourceByFile(string baseDirectory, string relFile, IProgress progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters baseDirectory string relFile string progress IProgress enableRebase bool res object[] Returns FileRefSource Type Parameters T GenFileRefSource(XElement, string, IProgress, bool, object[]) Generates a FileRefSource from an XML element. public static FileRefSource GenFileRefSource(XElement src, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters src XElement baseDirectory string progress IProgress enableRebase bool res object[] Returns FileRefSource Type Parameters T Gen(XElement, string, IProgress, bool, object[]) Generates an object of type T from an XML element. This overload discards the relative file path output. public static T Gen(XElement src, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement The source XML element baseDirectory string The base directory for resolving paths progress IProgress Progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location res object[] Additional parameters for generation Returns T The generated object of type T Type Parameters T The type of object to generate Gen(XElement, string, out string, IProgress, bool, object[]) Generates an object of type T from an XML element. public static T Gen(XElement src, string baseDirectory, out string relFile, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement The source XML element baseDirectory string The base directory for resolving paths relFile string Output parameter that receives the relative file path if src is a file reference, or null otherwise progress IProgress Progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location res object[] Additional parameters for generation Returns T The generated object of type T Type Parameters T The type of object to generate" + "summary": "Class XFactory Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Factory class for generating objects from XML elements using registered generator functions. public static class XFactory Inheritance object XFactory Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Generator functions must be added to Generators to enable the factory to create objects from XML. Properties Generators Gets or sets the dictionary mapping XML element names to generator functions with relative file path. public static Dictionary Generators { get; set; } Property Value Dictionary Methods GenByChild(XElement, string, IProgress, bool, object[]) Generates an object of type T from the first child element of the provided XML element. This overload discards the relative file path output. public static T GenByChild(XElement src, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement baseDirectory string progress IProgress enableRebase bool res object[] Returns T Type Parameters T GenByChild(XElement, string, out string, IProgress, bool, object[]) Generates an object of type T from the first child element of the provided XML element. public static T GenByChild(XElement src, string baseDirectory, out string relFile, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement The parent XML element containing the child to process baseDirectory string The base directory for resolving paths relFile string Output parameter that receives the relative file path if src is a file reference, or null otherwise progress IProgress Progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location res object[] Additional parameters for generation Returns T The generated object of type T, or null if src is null Type Parameters T The type of object to generate GenByFile(string, string, IProgress, bool, object[]) Generates an object of type T from an XML file. public static T GenByFile(string baseDirectory, string relFile, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters baseDirectory string The base directory for resolving paths relFile string The relative file path to the XML file progress IProgress Progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location res object[] Additional parameters for generation Returns T The generated object of type T, or null if relFile is null Type Parameters T The type of object to generate GenFileRefSourceByChild(XElement, string, IProgress, bool, object[]) Generates a FileRefSource from the first child element of the provided XML element. public static FileRefSource GenFileRefSourceByChild(XElement src, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters src XElement baseDirectory string progress IProgress enableRebase bool res object[] Returns FileRefSource Type Parameters T GenFileRefSourceByFile(string, string, IProgress, bool, object[]) Generates a FileRefSource from an XML file. public static FileRefSource GenFileRefSourceByFile(string baseDirectory, string relFile, IProgress progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters baseDirectory string relFile string progress IProgress enableRebase bool res object[] Returns FileRefSource Type Parameters T GenFileRefSource(XElement, string, IProgress, bool, object[]) Generates a FileRefSource from an XML element. public static FileRefSource GenFileRefSource(XElement src, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource Parameters src XElement baseDirectory string progress IProgress enableRebase bool res object[] Returns FileRefSource Type Parameters T Gen(XElement, string, IProgress, bool, object[]) Generates an object of type T from an XML element. This overload discards the relative file path output. public static T Gen(XElement src, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement The source XML element baseDirectory string The base directory for resolving paths progress IProgress Progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location res object[] Additional parameters for generation Returns T The generated object of type T Type Parameters T The type of object to generate Gen(XElement, string, out string, IProgress, bool, object[]) Generates an object of type T from an XML element. public static T Gen(XElement src, string baseDirectory, out string relFile, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters src XElement The source XML element baseDirectory string The base directory for resolving paths relFile string Output parameter that receives the relative file path if src is a file reference, or null otherwise progress IProgress Progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location res object[] Additional parameters for generation Returns T The generated object of type T Type Parameters T The type of object to generate" }, "api/Hi.Common.XmlUtils.XmlUtil.html": { "href": "api/Hi.Common.XmlUtils.XmlUtil.html", @@ -1027,7 +1027,7 @@ "api/Hi.Common.XmlUtils.html": { "href": "api/Hi.Common.XmlUtils.html", "title": "Namespace Hi.Common.XmlUtils | HiAPI-C# 2025", - "summary": "Namespace Hi.Common.XmlUtils Classes FileRefSource A class that combines an XML-serializable data object with its source file path. ProjectApiVersion Carries the API version read from a project file's XML attribute through the XFactory deserialization pipeline via the object[] res parameter. Consumers retrieve it with res?.OfType().FirstOrDefault(). XFactory Factory class for generating objects from XML elements using registered generator functions. XmlUtil Utility for managing XML. Interfaces IMakeXmlSource Interface for objects that can be serialized to XML format. IToXElement Interface of ToXElement(). Which can be represented by a single XElement. Delegates SetFileDelegate Delegate for setting the file path during XML operations. XFactory.GenByXElementDelegate Delegate for generating objects from XML elements with relative file path. XFactory.XmlExceptionDelegate Delegate for handling XML exceptions during generation." + "summary": "Namespace Hi.Common.XmlUtils Classes FileRefSource A class that combines an XML-serializable data object with its source file path. ProjectApiVersion Carries the API version read from a project file's XML attribute through the XFactory deserialization pipeline via the object[] res parameter. Consumers retrieve it with res?.OfType().FirstOrDefault(). XFactory Factory class for generating objects from XML elements using registered generator functions. XmlUtil Utility for managing XML. Interfaces IMakeXmlSource Interface for objects that can be serialized to XML format. IToXElement Interface of ToXElement(). Which can be represented by a single XElement. Delegates SetFileDelegate Delegate for setting the file path during XML operations. XFactory.XGeneratorDelegate Delegate for generating objects from XML elements with relative file path. XFactory.XmlExceptionDelegate Delegate for handling XML exceptions during generation." }, "api/Hi.Common.html": { "href": "api/Hi.Common.html", @@ -2112,7 +2112,7 @@ "api/Hi.MachiningProcs.SessionProgress.html": { "href": "api/Hi.MachiningProcs.SessionProgress.html", "title": "Class SessionProgress | HiAPI-C# 2025", - "summary": "Class SessionProgress Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a host for managing milling messages with thread-safe operations and stable index tracking. public class SessionProgress : IProgress Inheritance object SessionProgress Implements IProgress Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MultiTagMessageUtil.ReportError(IProgress, string, params string[]) MultiTagMessageUtil.ReportException(IProgress, Exception, params string[]) MultiTagMessageUtil.ReportInfo(IProgress, string, params string[]) MultiTagMessageUtil.ReportMessage(IProgress, string, params string[]) MultiTagMessageUtil.ReportProgress(IProgress, string, params string[]) MultiTagMessageUtil.ReportSuccess(IProgress, string, params string[]) MultiTagMessageUtil.ReportWarning(IProgress, string, params string[]) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties MessageCollection Gets or sets the thread-safe collection of milling messages. The getter is for readonly. Do not edit the collection directly. public SynList MessageCollection { get; } Property Value SynList StableIndex Gets or sets the stable index. No other data will be inserted before this index. The term stable means it is thread safe to access range from 0 to StableIndex(exclusive). public int StableIndex { get; } Property Value int Methods Add(object) Adds a new entry to the message collection. public object Add(object entry) Parameters entry object The entry to add. Returns object The added milling message. Clear() Clears all messages from the collection. public void Clear() GetFliteredList(FilterFlag, string) Gets a filtered list of session messages. public List GetFliteredList(SessionProgress.FilterFlag flags, string filterText) Parameters flags SessionProgress.FilterFlag Filtering flags that determine which message categories are included. filterText string Optional text to filter by; case-insensitive contains match. Returns List A list of messages that match the specified filters. GetSourceCommand(SessionMessage) Retrieves the source command associated with the specified machining message. public IIndexedFileLine GetSourceCommand(SessionMessage machiningMessage) Parameters machiningMessage SessionMessage The machining message to find the source command for. Returns IIndexedFileLine The source command that generated the message, or null if not found. Report(object) Reports a progress update. public void Report(object entry) Parameters entry object SetStableIndexToEnd() Sets the StableIndex to the end of the collection. public void SetStableIndexToEnd() Events CollectionCleared Event raised when the collection is cleared. public event Action CollectionCleared Event Type Action CollectionItemAdded Event raised when a new milling message is added to the collection. public event Action CollectionItemAdded Event Type Action CollectionItemChanged Event raised when a collection item is changed. public event Action CollectionItemChanged Event Type Action" + "summary": "Class SessionProgress Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a host for managing milling messages with thread-safe operations and stable index tracking. public class SessionProgress : IProgress Inheritance object SessionProgress Implements IProgress Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MultiTagMessageUtil.ReportError(IProgress, string, params string[]) MultiTagMessageUtil.ReportException(IProgress, Exception, params string[]) MultiTagMessageUtil.ReportInfo(IProgress, string, params string[]) MultiTagMessageUtil.ReportMessage(IProgress, string, params string[]) MultiTagMessageUtil.ReportProgress(IProgress, string, params string[]) MultiTagMessageUtil.ReportSuccess(IProgress, string, params string[]) MultiTagMessageUtil.ReportWarning(IProgress, string, params string[]) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SessionProgress() Initializes a new instance with default settings. public SessionProgress() Properties MessageCollection Gets or sets the thread-safe collection of milling messages. The getter is for readonly. Do not edit the collection directly. public SynList MessageCollection { get; } Property Value SynList StableIndex Gets or sets the stable index. No other data will be inserted before this index. The term stable means it is thread safe to access range from 0 to StableIndex(exclusive). public int StableIndex { get; } Property Value int Methods Add(object) Adds a new entry to the message collection. public object Add(object entry) Parameters entry object The entry to add. Returns object The added milling message. Clear() Clears all messages from the collection. public void Clear() GetFliteredList(FilterFlag, string) Gets a filtered list of session messages. public List GetFliteredList(SessionProgress.FilterFlag flags, string filterText) Parameters flags SessionProgress.FilterFlag Filtering flags that determine which message categories are included. filterText string Optional text to filter by; case-insensitive contains match. Returns List A list of messages that match the specified filters. GetSourceCommand(SessionMessage) Retrieves the source command associated with the specified machining message. public IIndexedFileLine GetSourceCommand(SessionMessage machiningMessage) Parameters machiningMessage SessionMessage The machining message to find the source command for. Returns IIndexedFileLine The source command that generated the message, or null if not found. Report(object) Reports a progress update. public void Report(object entry) Parameters entry object SetStableIndexToEnd() Sets the StableIndex to the end of the collection. public void SetStableIndexToEnd() Events CollectionCleared Event raised when the collection is cleared. public event Action CollectionCleared Event Type Action CollectionItemAdded Event raised when a new milling message is added to the collection. public event Action CollectionItemAdded Event Type Action CollectionItemChanged Event raised when a collection item is changed. public event Action CollectionItemChanged Event Type Action" }, "api/Hi.MachiningProcs.SessionShell.html": { "href": "api/Hi.MachiningProcs.SessionShell.html", @@ -3522,7 +3522,7 @@ "api/Hi.NcParsers.Dependencys.CncBrandDependency.html": { "href": "api/Hi.NcParsers.Dependencys.CncBrandDependency.html", "title": "Class CncBrandDependency | HiAPI-C# 2025", - "summary": "Class CncBrandDependency Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Explicit CNC controller brand identifier carried in NcDependencyList. Use ncDependencyList.OfType().FirstOrDefault() to retrieve the brand. public class CncBrandDependency : INcDependency, IMakeXmlSource Inheritance object CncBrandDependency Implements INcDependency IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CncBrandDependency(string) Creates a dependency with the given brand string. public CncBrandDependency(string brand) Parameters brand string Controller brand name (often one of the public const tokens on this type). CncBrandDependency(XElement) Deserializes brand from XML. public CncBrandDependency(XElement src) Parameters src XElement Root element named XName. Fields Fanuc Brand token used when the controller is Fanuc. public const string Fanuc = \"Fanuc\" Field Value string Heidenhain Brand token used when the controller is Heidenhain. public const string Heidenhain = \"Heidenhain\" Field Value string Mazak Brand token used when the controller is Mazak. public const string Mazak = \"Mazak\" Field Value string Siemens Brand token used when the controller is Siemens. public const string Siemens = \"Siemens\" Field Value string Syntec Brand token used when the controller is Syntec. public const string Syntec = \"Syntec\" Field Value string Properties Brand CNC controller brand name (e.g., “Fanuc”, “Siemens”). public string Brand { get; set; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CncBrandDependency Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Explicit CNC controller brand identifier carried in NcDependencyList. Use ncDependencyList.OfType().FirstOrDefault() to retrieve the brand. public class CncBrandDependency : INcDependency, IMakeXmlSource Inheritance object CncBrandDependency Implements INcDependency IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CncBrandDependency(string) Creates a dependency with the given brand string. public CncBrandDependency(string brand) Parameters brand string Controller brand name (often one of the public const tokens on this type). CncBrandDependency(XElement) Deserializes brand from XML. public CncBrandDependency(XElement src) Parameters src XElement Root element named XName. Fields Fanuc Brand token used when the controller is Fanuc. public const string Fanuc = \"Fanuc\" Field Value string Heidenhain Brand token used when the controller is Heidenhain. public const string Heidenhain = \"Heidenhain\" Field Value string Mazak Brand token used when the controller is Mazak. public const string Mazak = \"Mazak\" Field Value string Siemens Brand token used when the controller is Siemens. public const string Siemens = \"Siemens\" Field Value string Syntec Brand token used when the controller is Syntec. public const string Syntec = \"Syntec\" Field Value string Properties Brand CNC controller brand name (e.g., “Fanuc”, “Siemens”). public string Brand { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html": { "href": "api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html", @@ -3534,6 +3534,11 @@ "title": "Enum CutterCompensationType | HiAPI-C# 2025", "summary": "Enum CutterCompensationType Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc #5003: Cutter compensation startup/cancellation type. public enum CutterCompensationType Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields TypeA = 0 Type A: compensation vector perpendicular to the block next to startup/cancellation. TypeB = 1 Type B: compensation vector perpendicular to startup/cancellation block + intersection vector. TypeC = 2 Type C: when startup/cancellation block has no movement, shift perpendicular to the adjacent block." }, + "api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html", + "title": "Class FanucGotoIterationDependency | HiAPI-C# 2025", + "summary": "Class FanucGotoIterationDependency Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Watchdog for Fanuc Custom Macro B GOTO loops. Holds a MaxIterationsPerTarget limit (XML-persisted user config — the soft cap above which the upcoming FanucGotoSyntax stops firing and emits a warning) plus a runtime per-target hit counter (CountByTarget — not serialised, cleared at session start by RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken)). The dependency is syntax-managed: FanucGotoSyntax reads the limit, increments the counter, and decides whether to fire. There is no host Func provider — the dep is placed in Hi.NcParsers.Dependencys.Fanuc rather than Hi.NcParsers.Dependencys.SystemWired because nothing outside the syntax pipeline writes it; Reset() is a plain method call the runner invokes, not a host-wired Func. The counter key is (FileName, TargetN) where FileName is the source-level file path of the block containing the GOTO (the relative path form carried on FilePath — same form used by IndexedFileLine labels). Source-level keying means multiple inline invocations of the same subprogram pool their counts (they ARE the same source-code GOTO), while two different files with their own N100 stay isolated (they ARE different jumps). Default MaxIterationsPerTarget is 1000 — a runaway-loop guard, not a precise iteration budget. Legitimate macro loops (multi-hole drill matrices, calibration sweeps) sit well below this; truly infinite loops hit the limit fast. Projects with batch-style macros that legitimately need higher counts can raise the value in the project XML. public class FanucGotoIterationDependency : INcDependency, IMakeXmlSource Inheritance object FanucGotoIterationDependency Implements INcDependency IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucGotoIterationDependency() Initializes a new instance with the default limit and an empty counter. public FanucGotoIterationDependency() FanucGotoIterationDependency(XElement) Loads MaxIterationsPerTarget from XML produced by MakeXmlSource(string, string, bool); absent element falls back to DefaultMaxIterationsPerTarget. public FanucGotoIterationDependency(XElement src) Parameters src XElement Root element named XName. Fields DefaultMaxIterationsPerTarget Default for MaxIterationsPerTarget. Sized as a runaway-loop guard: legitimate Fanuc macros (drill grids, calibration sweeps) stay well below, while truly unbounded loops hit it fast. public const int DefaultMaxIterationsPerTarget = 1000 Field Value int Properties CountByTarget Per-target hit counter keyed by (FileName, TargetN). Runtime-only; not serialised. Cleared by Reset() on the session-init edge so a brand-preset runner reused across sessions does not leak counts. public Dictionary<(string FileName, int TargetN), int> CountByTarget { get; } Property Value Dictionary<(string FileName, int TargetN), int> MaxIterationsPerTarget Soft cap on consecutive fires of any single GOTO target within one source file (see CountByTarget for the keying). Above this, the consuming syntax should emit a warning and suppress the redirect on the over-limit block; subsequent blocks flow through naturally. public int MaxIterationsPerTarget { get; set; } Property Value int XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Reset() Clears CountByTarget; leaves MaxIterationsPerTarget untouched. public void Reset()" + }, "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html", "title": "Class FanucParameterTable | HiAPI-C# 2025", @@ -3542,12 +3547,12 @@ "api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html", "title": "Class FanucPositionVariableLookup | HiAPI-C# 2025", - "summary": "Class FanucPositionVariableLookup Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc-style position system variables read from the previous block's runtime-state JSON sections: #5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz. #5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState. #5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz. Stateless. Configured on RuntimeVariableLookups rather than NcDependencyList because the read needs the block node for Previous access — there is no long-lived dependency object that owns this data. public sealed class FanucPositionVariableLookup : IRuntimeVariableLookup Inheritance object FanucPositionVariableLookup Implements IRuntimeVariableLookup Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields AbsoluteXyzBase Inclusive lower bound of the absolute XYZ position range (#5041). public const int AbsoluteXyzBase = 5041 Field Value int BlockEndXyzBase Inclusive lower bound of the block-end XYZ position range (#5001). public const int BlockEndXyzBase = 5001 Field Value int MachineCoordXyzBase Inclusive lower bound of the machine-coordinate XYZ position range (#5021). public const int MachineCoordXyzBase = 5021 Field Value int Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. public double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double?" + "summary": "Class FanucPositionVariableLookup Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc-style position system variables read from the previous block's runtime-state JSON sections: #5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz. #5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState. #5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz. Stateless. Configured on RuntimeVariableLookups rather than NcDependencyList because the read needs the block node for Previous access — there is no long-lived dependency object that owns this data. public sealed class FanucPositionVariableLookup : IRuntimeVariableLookup, IMakeXmlSource Inheritance object FanucPositionVariableLookup Implements IRuntimeVariableLookup IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucPositionVariableLookup() Default constructor. public FanucPositionVariableLookup() FanucPositionVariableLookup(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise. public FanucPositionVariableLookup(XElement src) Parameters src XElement Fields AbsoluteXyzBase Inclusive lower bound of the absolute XYZ position range (#5041). public const int AbsoluteXyzBase = 5041 Field Value int BlockEndXyzBase Inclusive lower bound of the block-end XYZ position range (#5001). public const int BlockEndXyzBase = 5001 Field Value int MachineCoordXyzBase Inclusive lower bound of the machine-coordinate XYZ position range (#5021). public const int MachineCoordXyzBase = 5021 Field Value int Properties XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. public double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double? MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html", "title": "Class FanucToolOffsetVariableLookup | HiAPI-C# 2025", - "summary": "Class FanucToolOffsetVariableLookup Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc-side adapter that exposes a wrapped ToolOffsetTable as an IVariableLookup following Fanuc Memory C tool offset addressing: #2001+N → effective height of offset N (geometry − wear). The underlying ToolOffsetTable stays brand-neutral — Heidenhain / Siemens can use the same storage with different addressing by registering their own adapter alongside the table. Holds a reference to the table rather than owning data so writes through the table show up immediately in lookups via this adapter. public class FanucToolOffsetVariableLookup : INcDependency, IMakeXmlSource, IVariableLookup Inheritance object FanucToolOffsetVariableLookup Implements INcDependency IMakeXmlSource IVariableLookup Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucToolOffsetVariableLookup() Empty constructor for XFactory deserialisation; Table must be set explicitly. public FanucToolOffsetVariableLookup() FanucToolOffsetVariableLookup(ToolOffsetTable) Wraps the given table so it can serve Fanuc-style #2001+ reads. public FanucToolOffsetVariableLookup(ToolOffsetTable table) Parameters table ToolOffsetTable FanucToolOffsetVariableLookup(XElement) Loads from XML produced by MakeXmlSource(string, string, bool); Table is rebound by the runner after deserialisation. public FanucToolOffsetVariableLookup(XElement src) Parameters src XElement Fields ToolHeightMax Inclusive upper bound of the Fanuc tool height address range (#2200). public const int ToolHeightMax = 2200 Field Value int ToolHeightMin Inclusive lower bound of the Fanuc tool height address range (#2001). public const int ToolHeightMin = 2001 Field Value int Properties Table Underlying brand-neutral tool offset storage. public ToolOffsetTable Table { get; set; } Property Value ToolOffsetTable XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Get(string) Returns the value of the variable identified by key (e.g. \"#124\"), or null if vacant or unknown to this lookup. public double? Get(string key) Parameters key string Returns double? Remarks Routes #2001-#2200 to GetToolHeightOffset_mm(int); other keys return null so the evaluator's lookup chain falls through. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FanucToolOffsetVariableLookup Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc-side adapter that exposes a wrapped ToolOffsetTable (resolved at call time from the dependency list) as an IRuntimeVariableLookup following Fanuc Memory C tool offset addressing: #2001+N → effective height of offset N (geometry − wear). The underlying ToolOffsetTable stays brand-neutral — Heidenhain / Siemens can use the same storage with different addressing by registering their own adapter alongside the table. Stateless: holds no reference of its own and resolves the table from the per-call dependencies list, so XML round-trip is trivial (an empty element). Registered on a brand preset's VariableEvaluatorSyntax.RuntimeVariableLookups, not on NcDependencyList — the wrapper owns no long-lived data, only the Fanuc-style id addressing scheme. The underlying ToolOffsetTable still lives in NcDependencyList as the data dependency. public sealed class FanucToolOffsetVariableLookup : IRuntimeVariableLookup, IMakeXmlSource Inheritance object FanucToolOffsetVariableLookup Implements IRuntimeVariableLookup IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucToolOffsetVariableLookup() Default constructor. public FanucToolOffsetVariableLookup() FanucToolOffsetVariableLookup(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise. public FanucToolOffsetVariableLookup(XElement src) Parameters src XElement Fields ToolHeightMax Inclusive upper bound of the Fanuc tool height address range (#2200). public const int ToolHeightMax = 2200 Field Value int ToolHeightMin Inclusive lower bound of the Fanuc tool height address range (#2001). public const int ToolHeightMin = 2001 Field Value int Properties XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. public double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double? Remarks Routes #2001-#2200 to GetToolHeightOffset_mm(int) on the ToolOffsetTable found in dependencies; other keys return null so the evaluator's lookup chain falls through. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html", @@ -3557,7 +3562,7 @@ "api/Hi.NcParsers.Dependencys.Fanuc.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.html", "title": "Namespace Hi.NcParsers.Dependencys.Fanuc | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Dependencys.Fanuc Classes FanucParameterTable Fanuc controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following real Fanuc parameter numbering. FanucPositionVariableLookup Fanuc-style position system variables read from the previous block's runtime-state JSON sections: #5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz. #5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState. #5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz. Stateless. Configured on RuntimeVariableLookups rather than NcDependencyList because the read needs the block node for Previous access — there is no long-lived dependency object that owns this data. FanucToolOffsetVariableLookup Fanuc-side adapter that exposes a wrapped ToolOffsetTable as an IVariableLookup following Fanuc Memory C tool offset addressing: #2001+N → effective height of offset N (geometry − wear). The underlying ToolOffsetTable stays brand-neutral — Heidenhain / Siemens can use the same storage with different addressing by registering their own adapter alongside the table. Holds a reference to the table rather than owning data so writes through the table show up immediately in lookups via this adapter. RetainedCommonVariableTable Fanuc-style ISO controller common variable table for the retained range #500-#999. These variables survive a power cycle (in real hardware they live in NV-RAM) and are serialised into the project file. Excluded by design: Local #1-#33Call-frame scoped (Fanuc local variables); lives in the SyntaxPiece JSON dataflow, not here. Non-retained common #100-#499Cleared by program-end / power reset; lives in the SyntaxPiece JSON dataflow as well, not in this table. System #1000+Read-only or computed from runtime state; resolved by dedicated reading syntaxes against other dependencies (e.g. FanucParameterTable, tool offset / WCS tables). Vacant (Fanuc ) is represented by null: either the dictionary has no entry for the key, or the entry maps to null. Both are treated identically by GetVariable(int). Naming rationale: Fanuc official documentation calls #500-#999 \"retained common variables\" (and #100-#499 \"non-retained common variables\"). The umbrella term \"macro variable\" was avoided because it conflicts with Custom Macro B's call-frame concept (G65/G66 push a frame containing the local #1-#33); using RetainedCommonVariableTable reserves \"macro\" for the call-frame topic. Enums CutterCompensationType Fanuc #5003: Cutter compensation startup/cancellation type." + "summary": "Namespace Hi.NcParsers.Dependencys.Fanuc Classes FanucGotoIterationDependency Watchdog for Fanuc Custom Macro B GOTO loops. Holds a MaxIterationsPerTarget limit (XML-persisted user config — the soft cap above which the upcoming FanucGotoSyntax stops firing and emits a warning) plus a runtime per-target hit counter (CountByTarget — not serialised, cleared at session start by RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken)). The dependency is syntax-managed: FanucGotoSyntax reads the limit, increments the counter, and decides whether to fire. There is no host Func provider — the dep is placed in Hi.NcParsers.Dependencys.Fanuc rather than Hi.NcParsers.Dependencys.SystemWired because nothing outside the syntax pipeline writes it; Reset() is a plain method call the runner invokes, not a host-wired Func. The counter key is (FileName, TargetN) where FileName is the source-level file path of the block containing the GOTO (the relative path form carried on FilePath — same form used by IndexedFileLine labels). Source-level keying means multiple inline invocations of the same subprogram pool their counts (they ARE the same source-code GOTO), while two different files with their own N100 stay isolated (they ARE different jumps). Default MaxIterationsPerTarget is 1000 — a runaway-loop guard, not a precise iteration budget. Legitimate macro loops (multi-hole drill matrices, calibration sweeps) sit well below this; truly infinite loops hit the limit fast. Projects with batch-style macros that legitimately need higher counts can raise the value in the project XML. FanucParameterTable Fanuc controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following real Fanuc parameter numbering. FanucPositionVariableLookup Fanuc-style position system variables read from the previous block's runtime-state JSON sections: #5001-#5003Block-end position X/Y/Z (workpiece) → previous block's ProgramXyz. #5021-#5023Current machine position X/Y/Z → previous block's MachineCoordinateState. #5041-#5043Current absolute position X/Y/Z → previous block's ProgramXyz. Stateless. Configured on RuntimeVariableLookups rather than NcDependencyList because the read needs the block node for Previous access — there is no long-lived dependency object that owns this data. FanucToolOffsetVariableLookup Fanuc-side adapter that exposes a wrapped ToolOffsetTable (resolved at call time from the dependency list) as an IRuntimeVariableLookup following Fanuc Memory C tool offset addressing: #2001+N → effective height of offset N (geometry − wear). The underlying ToolOffsetTable stays brand-neutral — Heidenhain / Siemens can use the same storage with different addressing by registering their own adapter alongside the table. Stateless: holds no reference of its own and resolves the table from the per-call dependencies list, so XML round-trip is trivial (an empty element). Registered on a brand preset's VariableEvaluatorSyntax.RuntimeVariableLookups, not on NcDependencyList — the wrapper owns no long-lived data, only the Fanuc-style id addressing scheme. The underlying ToolOffsetTable still lives in NcDependencyList as the data dependency. RetainedCommonVariableTable Fanuc-style ISO controller common variable table for the retained range #500-#999. These variables survive a power cycle (in real hardware they live in NV-RAM) and are serialised into the project file. Excluded by design: Local #1-#33Call-frame scoped (Fanuc local variables); lives in the SyntaxPiece JSON dataflow, not here. Non-retained common #100-#499Cleared by program-end / power reset; lives in the SyntaxPiece JSON dataflow as well, not in this table. System #1000+Read-only or computed from runtime state; resolved by dedicated reading syntaxes against other dependencies (e.g. FanucParameterTable, tool offset / WCS tables). Vacant (Fanuc ) is represented by null: either the dictionary has no entry for the key, or the entry maps to null. Both are treated identically by GetVariable(int). Naming rationale: Fanuc official documentation calls #500-#999 \"retained common variables\" (and #100-#499 \"non-retained common variables\"). The umbrella term \"macro variable\" was avoided because it conflicts with Custom Macro B's call-frame concept (G65/G66 push a frame containing the local #1-#33); using RetainedCommonVariableTable reserves \"macro\" for the call-frame topic. Enums CutterCompensationType Fanuc #5003: Cutter compensation startup/cancellation type." }, "api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html", @@ -3739,6 +3744,11 @@ "title": "Namespace Hi.NcParsers.Dependencys | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.Dependencys Classes CncBrandDependency Explicit CNC controller brand identifier carried in NcDependencyList. Use ncDependencyList.OfType().FirstOrDefault() to retrieve the brand. ControllerParameterTableBase Base class for brand-specific controller parameter tables. Provides shared data structures, XML IO, and IHomeMcConfig IMachineAxisConfig implementations. Subclasses define brand-specific parameter numbers, XML attribute names, and derived convenience properties. HeidenhainDatumTable Heidenhain datum preset and datum shift tables. CYCL DEF 247 Q339=N reads from DatumPresetTable, CYCL DEF 7 #N reads from DatumShiftTable. Each table maps an integer ID (1–20) to a Vec3d offset. On real Heidenhain controllers, preset and datum tables are separate disk files (e.g. TNC:\\table\\preset.pr, *.d) — distinct from MP-prefixed Machine Parameters (held by HeidenhainParameterTable). HiNC mirrors that separation by keeping this dependency independent of HeidenhainParameterTable. Implements IIsoCoordinateConfig by mapping the ISO/DIN G54–G59 codes to preset rows 1–6, the conventional Heidenhain compatibility mapping for ISO/DIN programs running on a Heidenhain. IsoCoordinateAddressMap Fanuc-style ISO coordinate parameter address mapping. G54–G59 → #5221+ (stride 20, three consecutive numbers per entry for X/Y/Z), G54.1 P1–P48 → #7001+ (stride 20). Shared between FanucParameterTable (which calls these “ParamId”) and SyntecParameterTable (which calls them “PrId”) because both follow the same numeric scheme. Interfaces IBlockSkipConfig Runtime state of the controller's Block Delete / Block Skip switches. Present in NcDependencyList exposes this to the runner so that blocks whose head carries / or /N (parsed by BlockSkipSyntax into BlockSkip) are skipped at semantic time. Layers are 1..9; Layer 1 corresponds to the bare / prefix. Controllers (Fanuc / Syntec / Mazak / Siemens) let each layer be toggled independently via panel switches or system parameters. When this dependency is absent from NcDependencyList, no block is skipped (safest default: simulate the full machining). The syntax still consumes the / prefix so no UnparsedText--Remaining diagnostic is produced. ICannedCycleConfig Canned cycle configuration parameters. Implemented by brand-specific parameter tables (e.g., FanucParameterTable for Fanuc #4002, SyntecParameterTable for Syntec Pr4002) and by FallbackConfig as a safety net. Siemens and Heidenhain specify peck clearance per-call (CYCLE83 parameter / CYCL DEF), so their tables do not implement this interface. The FallbackConfig provides the default value in those cases. IHomeMcConfig G28 first reference position (home machine coordinate) per axis. IIsoCoordinateConfig ISO work coordinate offset provider. Maps a G-code work coordinate id (e.g. “G54”, “G59.2”, “G54.1P1”) to a machine-coordinate offset Vec3d. Implementations include IsoCoordinateTable (brand-agnostic standalone storage), FanucParameterTable / SyntecParameterTable (parameter-table integration via real Fanuc/Syntec parameter numbers #5221+ for G54–G59 and #7001+ for G54.1 P1–P48), SiemensFrameTable (Sinumerik $P_UIFR frames), and HeidenhainDatumTable (Heidenhain preset rows). IMachineAxisConfig Machine axis configuration: which axes exist and their types. Compatible with Fanuc, Siemens, Heidenhain, Mazak, Okuma. INcDependency Marker interface for objects that participate in the NC dependency list resolved by the soft-NC runtime. IPowerResettable Marks an INcDependency that holds volatile state which must be cleared when the controller performs a power reset (power off then on). Implementers should clear only the volatile subset they own (e.g. Fanuc common volatile macro variables #100-#499), and leave persistent state untouched (e.g. #500-#999, controller parameters). Call-frame local state (Fanuc #1-#33, Heidenhain Q200-Q1199) is NOT in scope — that lives in the SyntaxPiece JSON dataflow and is bounded by call activation, not power cycle. IRapidFeedrateConfig Provides per-axis rapid traverse feedrate for motion semantics. Implemented by ControllerParameterTableBase using brand-specific parameter numbers (e.g., Fanuc #1420, Siemens MD32000, Heidenhain MP1010). IStrokeLimitConfig Per-axis stroke (travel) limits. Unit is mm for linear axes, deg for rotary axes. Implemented by ControllerParameterTableBase using brand-specific parameter numbers (e.g., Fanuc #1300/#1320, Siemens MD36100/MD36110, Heidenhain MP420/MP430). IToolOffsetConfig Tool offset configuration indexed by a single integer offset number. Applies to Fanuc (H/D numbers), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers where one integer selects the offset row. For Siemens (840D/Sinumerik) where offsets are addressed by (tool number, cutting edge D number), see ISiemensToolOffsetConfig. IToolingMcConfig Machine position axes move to during tool change (M06). Enums AxisType Axis type: linear (translation), rotary (rotation), or spindle (speed/positioning dual mode)." }, + "api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html", + "title": "Class CallStackUtil | HiAPI-C# 2025", + "summary": "Class CallStackUtil Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Push / pop helpers for the per-block CallStack section. Both produce a fresh deep-cloned JsonObject ready to stamp onto an inlined piece (push site) or onto an M99 return block (pop site); the caller is responsible for deep-cloning again if it distributes the same stamp across multiple pieces of an L-repetition. Pairs with ModalCarrySyntax at the Logic stage: explicit push / pop writes seed the section at frame boundaries, ModalCarry copies it forward to every block in between so each block is self-contained for cache-dump readers and downstream consumers (notably M99 P{seq} reading the top frame's CallerFilePath). public static class CallStackUtil Inheritance object CallStackUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods BuildPoppedCallStack(JsonObject) Builds the post-pop CallStack section to stamp onto an M99 return block. Reads the M99 block's currently-carried stack, deep-clones it, and drops the top frame. Returns null when there was no frame to pop (M99 in main file with no caller — the runner treats this as program-end via the implicit fall-through; no stamp is needed). public static JsonObject BuildPoppedCallStack(JsonObject hostJson) Parameters hostJson JsonObject The M99 block's JSON object (post-carry, before this pop runs). Returns JsonObject BuildPushedCallStack(JsonObject, string) Builds the post-push CallStack section to stamp onto every inlined-body piece of a call. Reads the host block's current stack (defaulting to empty when absent — main-frame caller), deep-clones it, and appends a new CallFrame whose CallerFilePath records where the call originated. The returned JsonObject can be safely deep-cloned by the caller for each piece in an L-repetition. public static JsonObject BuildPushedCallStack(JsonObject hostJson, string callerFilePath) Parameters hostJson JsonObject The call-host block's JSON object. callerFilePath string Project-relative path of the host file (typically FilePath on the host piece). Returns JsonObject GetTopCallerFilePath(JsonObject) Returns the top frame's CallerFilePath from the given block's CallStack section, or null when the stack is empty or absent (block is in the main frame). public static string GetTopCallerFilePath(JsonObject hostJson) Parameters hostJson JsonObject Returns string" + }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.html", "title": "Struct EvalResult | HiAPI-C# 2025", @@ -3747,7 +3757,7 @@ "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup.html", "title": "Interface IRuntimeVariableLookup | HiAPI-C# 2025", - "summary": "Interface IRuntimeVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Stateless variable lookup that needs per-block runtime context — the current SyntaxPiece node (for Previous traceback into runtime-state sections like MachineCoordinateState / ProgramXyz) and the dependency list (so the lookup can read from sibling dependencies without holding a static reference). Distinguished from IVariableLookup: that one is for long-lived dependencies that already hold their own data (parameter tables, tool-offset wrappers, retained-variable tables) and need no block context. IRuntimeVariableLookup is for context-sensitive resolutions configured declaratively on RuntimeVariableLookups. Implementations should be brand-specific (e.g. Fanuc #5001-#5043 position reads) and return null for keys outside their range so the evaluator's chain can fall through to the next lookup. public interface IRuntimeVariableLookup Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double?" + "summary": "Interface IRuntimeVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Stateless variable lookup that needs per-block runtime context — the current SyntaxPiece node (for Previous traceback into runtime-state sections like MachineCoordinateState / ProgramXyz) and the dependency list (so the lookup can read from sibling dependencies without holding a static reference). Distinguished from IVariableLookup: that one is for long-lived dependencies that already hold their own data (parameter tables, tool-offset wrappers, retained-variable tables) and need no block context. IRuntimeVariableLookup is for context-sensitive resolutions configured declaratively on RuntimeVariableLookups. Implementations should be brand-specific (e.g. Fanuc #5001-#5043 position reads) and return null for keys outside their range so the evaluator's chain can fall through to the next lookup. Implementations are XML-serialised as part of VariableEvaluatorSyntax's round-trip: each impl exposes a static XName, registers itself with Generators, and implements MakeXmlSource(string, string, bool). Since impls are stateless, the typical body is just an empty element carrying the type name; brand identity is restored by XFactory dispatch. public interface IRuntimeVariableLookup : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double?" }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.IVariableLookup.html", @@ -3757,17 +3767,17 @@ "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html", "title": "Class LocalVariableLookup | HiAPI-C# 2025", - "summary": "Class LocalVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current SyntaxPiece JSON, walking Previous until the entry is found. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Stateless and dependency-free — instances are interchangeable. public class LocalVariableLookup : IRuntimeVariableLookup Inheritance object LocalVariableLookup Implements IRuntimeVariableLookup Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields LocalMax Inclusive upper bound of the macro-local range (#33). public const int LocalMax = 33 Field Value int LocalMin Inclusive lower bound of the macro-local range (#1). public const int LocalMin = 1 Field Value int Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. public double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double?" + "summary": "Class LocalVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current SyntaxPiece JSON, falling back to the immediately previous block when they share the same MacroFrame id. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Two-step lookup (mirrors VolatileVariableLookup): the current block sees writes that FanucMacroCallSyntax stamped at inline time (the call-line argument bindings) and writes that FanucLocalVariableReadingSyntax applied on this block before the lookup runs; the previous block (frame-checked) supplies body-internal writes from the prior block in the same macro frame. Looking past the previous block is unnecessary because the reader carries forward block-by-block within a frame. Frame isolation via MacroFrame: a previous block whose frame id differs from the current block's is skipped — a macro body's body-internal locals are invisible to the caller after return, and the caller's main-frame locals are invisible inside the macro. M98/M198 subprogram inlining (SubProgramCallSyntax) deliberately does not stamp MacroFrame on its inlined blocks, so the callee inherits the caller's frame and sees the caller's locals — matching real Fanuc M98 semantics. Stateless and dependency-free — instances are interchangeable. public class LocalVariableLookup : IRuntimeVariableLookup, IMakeXmlSource Inheritance object LocalVariableLookup Implements IRuntimeVariableLookup IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LocalVariableLookup() Default constructor. public LocalVariableLookup() LocalVariableLookup(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise. public LocalVariableLookup(XElement src) Parameters src XElement Fields LocalMax Inclusive upper bound of the macro-local range (#33). public const int LocalMax = 33 Field Value int LocalMin Inclusive lower bound of the macro-local range (#1). public const int LocalMin = 1 Field Value int Properties XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. public double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double? MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html", "title": "Class NcBinaryExpr | HiAPI-C# 2025", - "summary": "Class NcBinaryExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Binary arithmetic on two operands (+ - * / or MOD). public sealed record NcBinaryExpr : NcExpr, IEquatable, IEquatable Inheritance object NcExpr NcBinaryExpr Implements IEquatable IEquatable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr) Binary arithmetic on two operands (+ - * / or MOD). public NcBinaryExpr(NcBinaryOp Op, NcExpr Left, NcExpr Right) Parameters Op NcBinaryOp Left NcExpr Right NcExpr Properties Left public NcExpr Left { get; init; } Property Value NcExpr Op public NcBinaryOp Op { get; init; } Property Value NcBinaryOp Right public NcExpr Right { get; init; } Property Value NcExpr" + "summary": "Class NcBinaryExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Binary operation on two operands. Covers arithmetic (+ - * / / MOD), comparison (EQ NE GT GE LT LE, yielding 1.0 / 0.0), and logical bitwise (AND OR XOR, operands truncated to long). public sealed record NcBinaryExpr : NcExpr, IEquatable, IEquatable Inheritance object NcExpr NcBinaryExpr Implements IEquatable IEquatable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcBinaryExpr(NcBinaryOp, NcExpr, NcExpr) Binary operation on two operands. Covers arithmetic (+ - * / / MOD), comparison (EQ NE GT GE LT LE, yielding 1.0 / 0.0), and logical bitwise (AND OR XOR, operands truncated to long). public NcBinaryExpr(NcBinaryOp Op, NcExpr Left, NcExpr Right) Parameters Op NcBinaryOp Left NcExpr Right NcExpr Properties Left public NcExpr Left { get; init; } Property Value NcExpr Op public NcBinaryOp Op { get; init; } Property Value NcBinaryOp Right public NcExpr Right { get; init; } Property Value NcExpr" }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html", "title": "Enum NcBinaryOp | HiAPI-C# 2025", - "summary": "Enum NcBinaryOp Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Binary operators allowed in Fanuc Custom Macro B value expressions. public enum NcBinaryOp Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Add = 0 a + b. Divide = 3 a / b. Mod = 4 a MOD b (truncated remainder, sign of a). Multiply = 2 a * b. Subtract = 1 a - b." + "summary": "Enum NcBinaryOp Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Binary operators allowed in Fanuc Custom Macro B value expressions. public enum NcBinaryOp Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Add = 0 a + b. And = 11 a AND b — bitwise AND on operands truncated to long. Non-finite or out-of-range operands surface Arithmetic–MathError. Divide = 3 a / b. Eq = 5 a EQ b — equal; yields 1.0 (true) or 0.0 (false). Ge = 8 a GE b — greater than or equal; yields 1.0 or 0.0. Gt = 7 a GT b — greater than; yields 1.0 or 0.0. Le = 10 a LE b — less than or equal; yields 1.0 or 0.0. Lt = 9 a LT b — less than; yields 1.0 or 0.0. Mod = 4 a MOD b (truncated remainder, sign of a). Multiply = 2 a * b. Ne = 6 a NE b — not equal; yields 1.0 or 0.0. Or = 12 a OR b — bitwise OR on operands truncated to long. Non-finite or out-of-range operands surface Arithmetic–MathError. Subtract = 1 a - b. Xor = 13 a XOR b — bitwise XOR on operands truncated to long. Non-finite or out-of-range operands surface Arithmetic–MathError." }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html", @@ -3777,12 +3787,12 @@ "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html", "title": "Class NcExpressionEvaluator | HiAPI-C# 2025", - "summary": "Class NcExpressionEvaluator Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Walks an NcExpr AST and produces an EvalResult. Resolves #nnn via an IVariableLookup; built-in function names are matched case-insensitively against a fixed table. Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN EXP POW. Trigonometric arguments and results are in degrees, matching Fanuc Custom Macro B convention. Unknown function names surface as UnsupportedFunctionCode; arity mismatches as ArgumentMismatchCode; division / MOD by zero and domain errors (e.g. SQRT[-1]) as MathErrorCode; vacant operands as VacantErrorCode. public sealed class NcExpressionEvaluator Inheritance object NcExpressionEvaluator Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields ArgumentMismatchCode Diagnostic code for built-in functions called with the wrong number of arguments. public const string ArgumentMismatchCode = \"BuiltinFunction--ArgumentMismatch\" Field Value string MathErrorCode Diagnostic code for division / MOD by zero and domain errors. public const string MathErrorCode = \"Arithmetic--MathError\" Field Value string UnsupportedFunctionCode Diagnostic code for unrecognised built-in function names. public const string UnsupportedFunctionCode = \"BuiltinFunction--Unsupported\" Field Value string VacantErrorCode Diagnostic code emitted when an evaluated #nnn is vacant. public const string VacantErrorCode = \"Variable--Vacant\" Field Value string Methods Evaluate(NcExpr, IVariableLookup) Evaluates expr against variables. public EvalResult Evaluate(NcExpr expr, IVariableLookup variables) Parameters expr NcExpr variables IVariableLookup Returns EvalResult" + "summary": "Class NcExpressionEvaluator Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Walks an NcExpr AST and produces an EvalResult. Resolves #nnn via an IVariableLookup; built-in function names are matched case-insensitively against a fixed table. Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN EXP POW. Trigonometric arguments and results are in degrees, matching Fanuc Custom Macro B convention. Unknown function names surface as UnsupportedFunctionCode; arity mismatches as ArgumentMismatchCode; division / MOD by zero and domain errors (e.g. SQRT[-1]) as MathErrorCode; vacant operands as VacantErrorCode. Numeric domain & type conventions. All values are IEEE 754 double — there is no separate bool / int type at runtime. Comparison ops (EQ NE GT GE LT LE) yield 1.0 (true) or 0.0 (false), using strict double equality / ordering (NaN compares as IEEE specifies — NaN EQ NaN is 0.0). Logical ops (AND OR XOR) truncate each operand to a 64-bit signed integer (Truncate(double) then cast to long) before applying the bitwise operation; non-finite or out-of-range operands surface MathErrorCode rather than silently wrapping. Truthiness at caller-side IF / WHILE gates is value != 0 — any non-zero value (bit, float, comparator result) is true. public sealed class NcExpressionEvaluator Inheritance object NcExpressionEvaluator Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields ArgumentMismatchCode Diagnostic code for built-in functions called with the wrong number of arguments. public const string ArgumentMismatchCode = \"BuiltinFunction--ArgumentMismatch\" Field Value string MathErrorCode Diagnostic code for division / MOD by zero and domain errors. public const string MathErrorCode = \"Arithmetic--MathError\" Field Value string UnsupportedFunctionCode Diagnostic code for unrecognised built-in function names. public const string UnsupportedFunctionCode = \"BuiltinFunction--Unsupported\" Field Value string VacantErrorCode Diagnostic code emitted when an evaluated #nnn is vacant. public const string VacantErrorCode = \"Variable--Vacant\" Field Value string Methods Evaluate(NcExpr, IVariableLookup) Evaluates expr against variables. public EvalResult Evaluate(NcExpr expr, IVariableLookup variables) Parameters expr NcExpr variables IVariableLookup Returns EvalResult" }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser.html", "title": "Class NcExpressionParser | HiAPI-C# 2025", - "summary": "Class NcExpressionParser Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Recursive-descent parser for Fanuc Custom Macro B value expressions. Pure: takes a string, produces an NcExpr AST. Performs no variable lookup and no evaluation. Grammar (highest precedence last): expr := term (('+' | '-') term)* term := factor (('*' | '/' | 'MOD') factor)* factor := ('+' | '-')? primary primary := number | '#' integer | '#' '[' expr ']' | '[' expr ']' | ident '[' arglist ']' ('/' '[' expr ']')? arglist := expr (',' expr)* Function names are case-insensitive (SIN = sin); whitespace is skipped between tokens. The '/' '[' expr ']' tail captures the dual-bracket form Fanuc uses for ATAN[a]/[b]; non-ATAN callers that happen to use it produce a function with an extra arg, which the evaluator rejects with an arity error. public sealed class NcExpressionParser Inheritance object NcExpressionParser Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods TryParse(string, out NcExpr, out string) Parses source. On success, expr is the AST and error is null. On failure, expr is null and error describes the syntax problem. public static bool TryParse(string source, out NcExpr expr, out string error) Parameters source string expr NcExpr error string Returns bool" + "summary": "Class NcExpressionParser Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Recursive-descent parser for Fanuc Custom Macro B value expressions. Pure: takes a string, produces an NcExpr AST. Performs no variable lookup and no evaluation. Grammar (lowest precedence at top): expr := or-expr or-expr := and-expr (('OR' | 'XOR') and-expr)* and-expr := cmp-expr ('AND' cmp-expr)* cmp-expr := add-expr (('EQ' | 'NE' | 'GT' | 'GE' | 'LT' | 'LE') add-expr)* add-expr := term (('+' | '-') term)* term := factor (('*' | '/' | 'MOD') factor)* factor := ('+' | '-')? primary primary := number | '#' integer | '#' '[' expr ']' | '[' expr ']' | ident '[' arglist ']' ('/' '[' expr ']')? arglist := expr (',' expr)* Function names and keyword operators (MOD, EQ NE GT GE LT LE, AND OR XOR) are case-insensitive (SIN = sin, EQ = eq); each keyword requires a non-identifier character on its right boundary so EQ1 is not the EQ operator followed by 1. Whitespace is skipped between tokens. The '/' '[' expr ']' tail captures the dual-bracket form Fanuc uses for ATAN[a]/[b]; non-ATAN callers that happen to use it produce a function with an extra arg, which the evaluator rejects with an arity error. Operator precedence intentionally puts boolean / logical layers below arithmetic so #1 + 1 GT 0 parses as (#1 + 1) GT 0 and #1 GT 0 AND #2 LT 10 parses as (#1 GT 0) AND (#2 LT 10), matching the Fanuc Custom Macro B spec for IF [..] GOTO / IF [..] THEN / WHILE [..] DO conditions. public sealed class NcExpressionParser Inheritance object NcExpressionParser Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods TryParse(string, out NcExpr, out string) Parses source. On success, expr is the AST and error is null. On failure, expr is null and error describes the syntax problem. public static bool TryParse(string source, out NcExpr expr, out string error) Parameters source string expr NcExpr error string Returns bool" }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcFunctionExpr.html", @@ -3817,53 +3827,128 @@ "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html", "title": "Class VolatileVariableLookup | HiAPI-C# 2025", - "summary": "Class VolatileVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Reads Fanuc-style non-retained common variables (#100-#499) from Vars.Volatile on the current SyntaxPiece JSON, walking Previous until the entry is found. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Stateless and dependency-free — instances are interchangeable. Reads use the same dict-merge carry that VolatileVariableReadingSyntax writes; the two stay decoupled (read side here; write side in the reader). public class VolatileVariableLookup : IRuntimeVariableLookup Inheritance object VolatileVariableLookup Implements IRuntimeVariableLookup Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. public double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double?" + "summary": "Class VolatileVariableLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Reads Fanuc-style non-retained common variables (#100-#499) from Vars.Volatile. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Single-step lookup: VolatileVariableReadingSyntax already dict-merges every block's Vars.Volatile into the next block, so the entry — if it exists — must be on the current block (when this lookup runs after the reader) or on the immediately previous block (when this lookup runs before the reader on the same block, which is the Fanuc preset's order — evaluator first, reader second). No arbitrary walk-back: such a walk would be defensive overkill given the reader's carry guarantee. Stateless and dependency-free — instances are interchangeable. Reads stay decoupled from the reader (read side here; write side in the reader). public class VolatileVariableLookup : IRuntimeVariableLookup, IMakeXmlSource Inheritance object VolatileVariableLookup Implements IRuntimeVariableLookup IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors VolatileVariableLookup() Default constructor. public VolatileVariableLookup() VolatileVariableLookup(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise. public VolatileVariableLookup(XElement src) Parameters src XElement Properties XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Get(string, LazyLinkedListNode, IReadOnlyList) Returns the value of the variable identified by key in the context of node and dependencies, or null if the key is outside this lookup's range or the value is vacant. public double? Get(string key, LazyLinkedListNode node, IReadOnlyList dependencies) Parameters key string node LazyLinkedListNode dependencies IReadOnlyList Returns double? MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html", "title": "Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Classes LocalVariableLookup Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current SyntaxPiece JSON, walking Previous until the entry is found. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Stateless and dependency-free — instances are interchangeable. NcBinaryExpr Binary arithmetic on two operands (+ - * / or MOD). NcExpr AST root for a Fanuc Custom Macro B value expression. Concrete leaves and combinators sit alongside NcExpressionParser; walking is the job of NcExpressionEvaluator. NcExpressionEvaluator Walks an NcExpr AST and produces an EvalResult. Resolves #nnn via an IVariableLookup; built-in function names are matched case-insensitively against a fixed table. Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN EXP POW. Trigonometric arguments and results are in degrees, matching Fanuc Custom Macro B convention. Unknown function names surface as UnsupportedFunctionCode; arity mismatches as ArgumentMismatchCode; division / MOD by zero and domain errors (e.g. SQRT[-1]) as MathErrorCode; vacant operands as VacantErrorCode. NcExpressionParser Recursive-descent parser for Fanuc Custom Macro B value expressions. Pure: takes a string, produces an NcExpr AST. Performs no variable lookup and no evaluation. Grammar (highest precedence last): expr := term (('+' | '-') term)* term := factor (('*' | '/' | 'MOD') factor)* factor := ('+' | '-')? primary primary := number | '#' integer | '#' '[' expr ']' | '[' expr ']' | ident '[' arglist ']' ('/' '[' expr ']')? arglist := expr (',' expr)* Function names are case-insensitive (SIN = sin); whitespace is skipped between tokens. The '/' '[' expr ']' tail captures the dual-bracket form Fanuc uses for ATAN[a]/[b]; non-ATAN callers that happen to use it produce a function with an extra arg, which the evaluator rejects with an arity error. NcFunctionExpr Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b]. NcIndirectVariableExpr Indirect variable reference #[expr]. The inner expression is evaluated and truncated toward zero to obtain an integer; the lookup key is then Prefix concatenated with that integer (e.g. Prefix=\"#\", computed 124 → \"#124\"). NcLiteralExpr Numeric literal (e.g. 1.5, 15., .5, 1e-3). NcUnaryExpr Unary + or - applied to an operand. NcVariableExpr Direct variable reference; Key is the raw source token (e.g. \"#124\") passed verbatim to Get(string). VolatileVariableLookup Reads Fanuc-style non-retained common variables (#100-#499) from Vars.Volatile on the current SyntaxPiece JSON, walking Previous until the entry is found. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Stateless and dependency-free — instances are interchangeable. Reads use the same dict-merge carry that VolatileVariableReadingSyntax writes; the two stay decoupled (read side here; write side in the reader). Structs EvalResult Outcome of evaluating an NcExpr. Either a successful numeric value, or a failure with an error code matching the diagnostic catalogue used by reading / evaluator syntaxes. Interfaces IRuntimeVariableLookup Stateless variable lookup that needs per-block runtime context — the current SyntaxPiece node (for Previous traceback into runtime-state sections like MachineCoordinateState / ProgramXyz) and the dependency list (so the lookup can read from sibling dependencies without holding a static reference). Distinguished from IVariableLookup: that one is for long-lived dependencies that already hold their own data (parameter tables, tool-offset wrappers, retained-variable tables) and need no block context. IRuntimeVariableLookup is for context-sensitive resolutions configured declaratively on RuntimeVariableLookups. Implementations should be brand-specific (e.g. Fanuc #5001-#5043 position reads) and return null for keys outside their range so the evaluator's chain can fall through to the next lookup. IVariableLookup Resolves a Custom Macro B variable reference to its current numeric value, or null for vacant (Fanuc ) and out-of-scope alike. The key is the raw source token — Fanuc \"#124\", Heidenhain \"Q1\", Siemens \"R1\" — so the interface itself is brand-agnostic. Implementations are typically narrow (one per id range / per brand prefix) and parse the prefix locally; chain them at the call site by trying each in priority order until one returns a non-null value. A returned null is treated by NcExpressionEvaluator as vacant and surfaces as a Variable--Vacant failure when the value is consumed in arithmetic context. Enums NcBinaryOp Binary operators allowed in Fanuc Custom Macro B value expressions. NcUnaryOp Unary operators allowed in Fanuc Custom Macro B value expressions." + "summary": "Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Classes LocalVariableLookup Reads Fanuc-style local macro variables (#1-#33) from Vars.Local on the current SyntaxPiece JSON, falling back to the immediately previous block when they share the same MacroFrame id. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Two-step lookup (mirrors VolatileVariableLookup): the current block sees writes that FanucMacroCallSyntax stamped at inline time (the call-line argument bindings) and writes that FanucLocalVariableReadingSyntax applied on this block before the lookup runs; the previous block (frame-checked) supplies body-internal writes from the prior block in the same macro frame. Looking past the previous block is unnecessary because the reader carries forward block-by-block within a frame. Frame isolation via MacroFrame: a previous block whose frame id differs from the current block's is skipped — a macro body's body-internal locals are invisible to the caller after return, and the caller's main-frame locals are invisible inside the macro. M98/M198 subprogram inlining (SubProgramCallSyntax) deliberately does not stamp MacroFrame on its inlined blocks, so the callee inherits the caller's frame and sees the caller's locals — matching real Fanuc M98 semantics. Stateless and dependency-free — instances are interchangeable. NcBinaryExpr Binary operation on two operands. Covers arithmetic (+ - * / / MOD), comparison (EQ NE GT GE LT LE, yielding 1.0 / 0.0), and logical bitwise (AND OR XOR, operands truncated to long). NcExpr AST root for a Fanuc Custom Macro B value expression. Concrete leaves and combinators sit alongside NcExpressionParser; walking is the job of NcExpressionEvaluator. NcExpressionEvaluator Walks an NcExpr AST and produces an EvalResult. Resolves #nnn via an IVariableLookup; built-in function names are matched case-insensitively against a fixed table. Phase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN EXP POW. Trigonometric arguments and results are in degrees, matching Fanuc Custom Macro B convention. Unknown function names surface as UnsupportedFunctionCode; arity mismatches as ArgumentMismatchCode; division / MOD by zero and domain errors (e.g. SQRT[-1]) as MathErrorCode; vacant operands as VacantErrorCode. Numeric domain & type conventions. All values are IEEE 754 double — there is no separate bool / int type at runtime. Comparison ops (EQ NE GT GE LT LE) yield 1.0 (true) or 0.0 (false), using strict double equality / ordering (NaN compares as IEEE specifies — NaN EQ NaN is 0.0). Logical ops (AND OR XOR) truncate each operand to a 64-bit signed integer (Truncate(double) then cast to long) before applying the bitwise operation; non-finite or out-of-range operands surface MathErrorCode rather than silently wrapping. Truthiness at caller-side IF / WHILE gates is value != 0 — any non-zero value (bit, float, comparator result) is true. NcExpressionParser Recursive-descent parser for Fanuc Custom Macro B value expressions. Pure: takes a string, produces an NcExpr AST. Performs no variable lookup and no evaluation. Grammar (lowest precedence at top): expr := or-expr or-expr := and-expr (('OR' | 'XOR') and-expr)* and-expr := cmp-expr ('AND' cmp-expr)* cmp-expr := add-expr (('EQ' | 'NE' | 'GT' | 'GE' | 'LT' | 'LE') add-expr)* add-expr := term (('+' | '-') term)* term := factor (('*' | '/' | 'MOD') factor)* factor := ('+' | '-')? primary primary := number | '#' integer | '#' '[' expr ']' | '[' expr ']' | ident '[' arglist ']' ('/' '[' expr ']')? arglist := expr (',' expr)* Function names and keyword operators (MOD, EQ NE GT GE LT LE, AND OR XOR) are case-insensitive (SIN = sin, EQ = eq); each keyword requires a non-identifier character on its right boundary so EQ1 is not the EQ operator followed by 1. Whitespace is skipped between tokens. The '/' '[' expr ']' tail captures the dual-bracket form Fanuc uses for ATAN[a]/[b]; non-ATAN callers that happen to use it produce a function with an extra arg, which the evaluator rejects with an arity error. Operator precedence intentionally puts boolean / logical layers below arithmetic so #1 + 1 GT 0 parses as (#1 + 1) GT 0 and #1 GT 0 AND #2 LT 10 parses as (#1 GT 0) AND (#2 LT 10), matching the Fanuc Custom Macro B spec for IF [..] GOTO / IF [..] THEN / WHILE [..] DO conditions. NcFunctionExpr Built-in function call like SIN[x], SQRT[x], ATAN[a]/[b]. NcIndirectVariableExpr Indirect variable reference #[expr]. The inner expression is evaluated and truncated toward zero to obtain an integer; the lookup key is then Prefix concatenated with that integer (e.g. Prefix=\"#\", computed 124 → \"#124\"). NcLiteralExpr Numeric literal (e.g. 1.5, 15., .5, 1e-3). NcUnaryExpr Unary + or - applied to an operand. NcVariableExpr Direct variable reference; Key is the raw source token (e.g. \"#124\") passed verbatim to Get(string). VolatileVariableLookup Reads Fanuc-style non-retained common variables (#100-#499) from Vars.Volatile. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through to the next lookup for out-of-range keys. Single-step lookup: VolatileVariableReadingSyntax already dict-merges every block's Vars.Volatile into the next block, so the entry — if it exists — must be on the current block (when this lookup runs after the reader) or on the immediately previous block (when this lookup runs before the reader on the same block, which is the Fanuc preset's order — evaluator first, reader second). No arbitrary walk-back: such a walk would be defensive overkill given the reader's carry guarantee. Stateless and dependency-free — instances are interchangeable. Reads stay decoupled from the reader (read side here; write side in the reader). Structs EvalResult Outcome of evaluating an NcExpr. Either a successful numeric value, or a failure with an error code matching the diagnostic catalogue used by reading / evaluator syntaxes. Interfaces IRuntimeVariableLookup Stateless variable lookup that needs per-block runtime context — the current SyntaxPiece node (for Previous traceback into runtime-state sections like MachineCoordinateState / ProgramXyz) and the dependency list (so the lookup can read from sibling dependencies without holding a static reference). Distinguished from IVariableLookup: that one is for long-lived dependencies that already hold their own data (parameter tables, tool-offset wrappers, retained-variable tables) and need no block context. IRuntimeVariableLookup is for context-sensitive resolutions configured declaratively on RuntimeVariableLookups. Implementations should be brand-specific (e.g. Fanuc #5001-#5043 position reads) and return null for keys outside their range so the evaluator's chain can fall through to the next lookup. Implementations are XML-serialised as part of VariableEvaluatorSyntax's round-trip: each impl exposes a static XName, registers itself with Generators, and implements MakeXmlSource(string, string, bool). Since impls are stateless, the typical body is just an empty element carrying the type name; brand identity is restored by XFactory dispatch. IVariableLookup Resolves a Custom Macro B variable reference to its current numeric value, or null for vacant (Fanuc ) and out-of-scope alike. The key is the raw source token — Fanuc \"#124\", Heidenhain \"Q1\", Siemens \"R1\" — so the interface itself is brand-agnostic. Implementations are typically narrow (one per id range / per brand prefix) and parse the prefix locally; chain them at the call site by trying each in priority order until one returns a non-null value. A returned null is treated by NcExpressionEvaluator as vacant and surfaces as a Variable--Vacant failure when the value is consumed in arithmetic context. Enums NcBinaryOp Binary operators allowed in Fanuc Custom Macro B value expressions. NcUnaryOp Unary operators allowed in Fanuc Custom Macro B value expressions." }, - "api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html": { - "href": "api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html", + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html", + "title": "Class FanucGotoSyntax | HiAPI-C# 2025", + "summary": "Class FanucGotoSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Resolves Fanuc Custom Macro B GOTO control flow. Triggered by Parsing.FanucGoto (written by FanucGotoParsingSyntax); decides whether to fire, and on fire calls ReplaceSource(IEnumerable) on layers[0] with the re-segmented file content starting at the matching N{target} label. The host block stays materialised (so cache dumps still see the GOTO call site); execution naturally continues from the new source once the pipeline pulls the next block. Both unconditional GOTO and conditional IF [] GOTO are implemented. The conditional form leans on VariableEvaluatorSyntax's pass-2 tree walk to substitute Parsing.FanucGoto.Condition with a numeric JsonValue when the expression evaluates successfully — ReadCondition(JsonNode) then reads the node polymorphically. Truthy non-zero fires the redirect; zero falls through silently; a still-string (unresolved) Condition emits FanucGoto--ConditionNotEvaluated and falls through. Pipeline placement: tail of the Fanuc / Mazak / Syntec Evaluation bundle. Must run after VariableEvaluatorSyntax so any # in the target N (e.g. GOTO #1) has been substituted to a literal in Parsing.FanucGoto.N. Reader syntaxes (VolatileVariableReadingSyntax etc.) are independent — they touch Parsing.Assignments, not Parsing.FanucGoto. Label scanning uses two hosted helper syntaxes — CommentSyntax and IndexSyntax — applied to each candidate block in turn so the predicate IndexNote.Number == target matches the same way the Parsing bundle would. Both are XML-IO-able so API customers can swap them (e.g. for a controller variant using ;-style comments or a different head symbol). Defaults match Fanuc: QuoteCommentSyntax and HeadIndexSyntax with the \"N\" symbol. public class FanucGotoSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucGotoSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucGotoSyntax() Parameterless instance with default helper syntaxes. public FanucGotoSyntax() FanucGotoSyntax(XElement, string, IProgress) Loads hosted helper syntaxes from XML produced by MakeXmlSource(string, string, bool). The wrapper contains one child element per probe syntax in source order; an absent wrapper falls back to the default list. public FanucGotoSyntax(XElement src, string baseDirectory, IProgress progress) Parameters src XElement Root element named XName. baseDirectory string Project base directory propagated to child XFactory calls. progress IProgress Diagnostic sink propagated to child factories. Properties LabelProbeSyntaxes Ordered list of helper syntaxes run on each candidate block during the label scan before the IndexNote.Number == target predicate is checked. The defaults match Fanuc — QuoteCommentSyntax strips parenthesised comments so a commented-out (N100) never matches, then HeadIndexSyntax with symbol “N” extracts the head index into IndexNote.Number. Exposed as a list (rather than two fixed properties) so API customers can insert additional probe syntaxes — for example a TailCommentSyntax for ;-style end-of-block comments alongside the parenthesised form, or a BlockSkipSyntax to skip /-prefixed blocks from the label-scan results. Order matters: comment-strippers before the head-index parser, the index parser last (so its output reflects the post-strip text). public List LabelProbeSyntaxes { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html", + "title": "Class FanucIfThenSyntax | HiAPI-C# 2025", + "summary": "Class FanucIfThenSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Resolves Fanuc Custom Macro B IF [] THEN single-block conditionals. Triggered by Parsing.FanucIfThen (written by FanucIfThenParsingSyntax); reads the now-resolved Condition node, decides whether to fire, and on fire lifts the parsing-stage PendingAssignments sub-object into the canonical Parsing.Assignments bucket so the brand-specific reader syntaxes downstream route each entry to its store the same way they would handle an unconditional #nnn = on a normal block. Unlike FanucGotoSyntax there is no source splice, no label scan, no iteration watchdog — the spec restricts the body to the current block. The host block is preserved either way (the stamped FanucIfThen section on the host's top-level JSON keeps the IF-THEN call site visible to cache dumps and diagnostics, with Applied flipped true only on a successful fire). Pipeline placement: in the Evaluation bundle after VariableEvaluatorSyntax (so the Condition expression has been substituted in place by pass-2 tree walk, and each PendingAssignments RHS string has been evaluated to a numeric JsonValue) and before the reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableReadingSyntax, FanucLocalVariableReadingSyntax, FanucSystemControlVariableSyntax) — that ordering lets the lifted entries reach the readers as if they had been written by TagAssignmentSyntax on a normal block. Three condition outcomes mirror the ReadCondition(JsonNode) shape: Truthy non-zero → lift assignments, stamp Applied=true. Truthy zero → fall through silently, Applied=false. Truthy null (evaluator failed, condition still a string or non-finite) → warn FanucIfThen--ConditionNotEvaluated, do not lift, Applied=false. A truthy condition with no PendingAssignments (body did not parse as one or more assignments — e.g. a G-code body, currently unsupported) warns FanucIfThen--UnsupportedBody and falls through. public class FanucIfThenSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucIfThenSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucIfThenSyntax() Parameterless instance (no XML state). public FanucIfThenSyntax() FanucIfThenSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucIfThenSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html", + "title": "Class FanucLocalVariableReadingSyntax | HiAPI-C# 2025", + "summary": "Class FanucLocalVariableReadingSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Routes literal-RHS assignments to Fanuc-style local macro variables (#1-#33) from Parsing.Assignments into Vars.Local on the current block, carrying the previous block's Vars.Local dict forward when both blocks share the same MacroFrame id. Mirrors VolatileVariableReadingSyntax for the #100-#499 range, with two differences: Carry is gated by MacroFrame equality, so a caller block after a G65 return does not inherit the macro body's final locals. Writes outside a macro frame (a main-program block doing #11 = 5) emit LocalVariable--MainFrameWriteUnsupported and consume the assignment without persisting — real Fanuc allows main-frame local writes but this simulator only tracks locals inside G65/G66 call frames; surfacing the gap as a diagnostic is more informative than a silent UnconsumedCheckSyntax hit. Pipeline placement: Evaluation bundle, after VariableEvaluatorSyntax (so any expression RHS such as #11 = #1 + 1 has already been normalised to a literal by the time this reader runs) and after the other range readers (RetainedCommonVariableReadingSyntax, VolatileVariableReadingSyntax) so they all share a similar Reader-stage shape. Only literal numeric RHS values are consumed here; non-literal entries (which can only persist if VariableEvaluatorSyntax failed to resolve them) are left untouched and surface via the evaluator's own VariableExpression--Unevaluated diagnostic plus UnconsumedCheckSyntax. public class FanucLocalVariableReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucLocalVariableReadingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucLocalVariableReadingSyntax() Default constructor. public FanucLocalVariableReadingSyntax() FanucLocalVariableReadingSyntax(XElement) Loads from XML produced by MakeXmlSource(string, string, bool); no state. public FanucLocalVariableReadingSyntax(XElement src) Parameters src XElement Fields LocalMax Inclusive upper bound of the local range (#33). public const int LocalMax = 33 Field Value int LocalMin Inclusive lower bound of the local range (#1). public const int LocalMin = 1 Field Value int Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html", + "title": "Class FanucMacroArgumentMap | HiAPI-C# 2025", + "summary": "Class FanucMacroArgumentMap Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Fanuc Custom Macro B Type-I argument-letter map: which call-line letter binds to which Vars.Local id (#1-#26) inside the macro body. Reserved letters (G, L, N, O, P) are absent — they are consumed by the call itself, not passed through. Used by FanucMacroCallSyntax (G65, one-shot) and FanucModalMacroSyntax (G66, modal) to translate the argument letters captured by G65Syntax / G66Syntax into the #nnn bindings the macro body's expression evaluator can read. public static class FanucMacroArgumentMap Inheritance object FanucMacroArgumentMap Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields Map Fanuc Custom Macro B Type-I letter-to-local-id map. Single-value per letter; Type-II's repeating I_J_K_ array binding is not modelled here. public static readonly IReadOnlyDictionary Map Field Value IReadOnlyDictionary" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html", + "title": "Class FanucMacroCallSyntax | HiAPI-C# 2025", + "summary": "Class FanucMacroCallSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Inlines a Fanuc Custom Macro B one-shot call (G65 P_ L_ [letter value …]) into the source layer and binds the call-line argument letters to Vars.Local #1-#26 per the Type-I map (see FanucMacroArgumentMap). Every inlined block carries the binding dict, a clone of the FanucMacroCall diagnostic record, and a MacroFrame id stamp — so LocalVariableLookup resolves arg references in a single-block lookup, a cache dump landing on any block immediately shows which call it belongs to, and downstream FanucLocalVariableReadingSyntax carries body-internal #1-#33 writes forward only within the same frame. The host block itself records FanucMacroCall but stays in the caller's frame (no MacroFrame stamp) and emits no motion act; after the macro body's last inlined block the pipeline continues naturally into the caller's next block (the inlined pieces sit ahead of the host block's successor in layers[0]). Frame isolation works on two layers. Statically, caller blocks have no MacroFrame stamp (frame id 0 by Get(JsonObject)), so the inlined frame ids (allocated fresh per L-repetition) never collide with main. Dynamically, LocalVariableLookup and FanucLocalVariableReadingSyntax compare frame ids before carrying any Vars.Local entry across a block boundary — a macro body's body-internal writes therefore stay inside the macro and never leak back into the caller's frame. Filename lookup mirrors SubProgramCallSyntax: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. The lookup root is InternalFolder (G65 has no \"external storage\" variant; M198's external root is M98/M198-only). L > 1 inlines the same macro L times in series. Each repetition is a fresh segmentation pass (so each block gets its own SyntaxPiece JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared) and gets a fresh FileIndex (so (FileIndex, LineIndex) pairs stay unique across the L-copies of the same source lines). Pipeline placement: ahead of SubProgramCallSyntax inside the Fanuc Evaluation BundleSyntax so a hypothetical G65 P_ + M98 P_ on the same block expands the G65 macro first (would be an unusual but legal composition). Detection is on the Parsing.G65 sub-object written by G65Syntax (a ParameterizedFlagSyntax) — the keyword \"G65\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. public class FanucMacroCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucMacroCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucMacroCallSyntax() Parameterless instance for bundle composition (no XML state). public FanucMacroCallSyntax() FanucMacroCallSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucMacroCallSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html", + "title": "Enum FanucModalMacroSyntax.SyntaxPhase | HiAPI-C# 2025", + "summary": "Enum FanucModalMacroSyntax.SyntaxPhase Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Identifies which pipeline phase the instance runs in. The two values correspond to the Evaluation-bundle and PostLogic-bundle registrations of this same syntax class. public enum FanucModalMacroSyntax.SyntaxPhase Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Expansion = 1 PostLogic phase: on every motion-producing block (signalled by MotionEvent presence) that sits inside an active G66 modal AND lives in the main frame (MacroFrame == 0), inlines the modal macro body — same call mechanism as FanucMacroCallSyntax. Setup = 0 Evaluation phase: captures G66 setup / G67 cancel edges into FanucModalMacro and carries the section forward block-to-block." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html", + "title": "Class FanucModalMacroSyntax | HiAPI-C# 2025", + "summary": "Class FanucModalMacroSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Handles Fanuc Custom Macro B modal-call lifecycle (G66 setup, G67 cancel, and per-motion-block implicit macro invocation). The same class is registered twice in the pipeline via Phase — once in the Evaluation bundle (Setup, captures G66/G67 edges and carries the FanucModalMacro state block-to-block) and once in the PostLogic bundle (Expansion, on every motion block within an active G66 modal, inlines the macro body via the same mechanism FanucMacroCallSyntax uses). Keeping both phases in one class makes the pairing visually explicit: readers see \"G66 in one file\" and the two methods (DoSetup, DoExpansion) make the lifecycle obvious. The two factory helpers (Setup, Expansion) mirror the ModalCarrySyntax.Logic / .PostLogic pattern already in the codebase. public class FanucModalMacroSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucModalMacroSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucModalMacroSyntax() Parameterless instance (defaults to Setup). public FanucModalMacroSyntax() FanucModalMacroSyntax(XElement) XML ctor. Reads child element; legacy project files without it default to Setup (the pre-expansion behaviour). public FanucModalMacroSyntax(XElement src) Parameters src XElement Root element named XName. Properties Expansion Factory: PostLogic-bundle instance that performs implicit motion-block expansion. public static FanucModalMacroSyntax Expansion { get; } Property Value FanucModalMacroSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string Phase Pipeline phase this instance runs in. Defaults to Setup. public FanucModalMacroSyntax.SyntaxPhase Phase { get; set; } Property Value FanucModalMacroSyntax.SyntaxPhase Setup Factory: Evaluation-bundle instance that handles G66/G67 setup + carry. public static FanucModalMacroSyntax Setup { get; } Property Value FanucModalMacroSyntax XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html", "title": "Class FanucSystemControlVariableSyntax | HiAPI-C# 2025", - "summary": "Class FanucSystemControlVariableSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Consumes Fanuc-style system-control variable assignments (#3000-#3999) — alarm trigger (#3000), millisecond and hour clocks (#3001 / #3002), single-block / feed-hold bypass flags (#3003 / #3004), pause-with-message (#3006), mirror-image flags (#3007), date / time (#3011 / #3012), tool-life data (#3030 / #3032), etc. Every id in this range is a controller-side state variable — its authoritative value lives on the real hardware (RTC, alarm bus, override switches, …) and an NC write at most triggers a side effect (clock reset, alarm raise, message-pause prompt). Offline simulation has none of that machinery, so this syntax does not emulate the effect. Instead it: records the literal write on the block JSON under Vars.SystemControl (round-trip and cache-dump visibility); emits a FanucSystemControl--Unsupported UnsupportedMessage(Sentence, string, string, object) so the user knows the assignment was recognised but its controller-side effect is not simulated. Message-severity (not Warning) because these writes are safe no-ops offline — every consumed assignment would emit a Warning per block, which would be noisy without signalling anything the user must act on; removes the entry from Parsing.Assignments so it does not re-surface as a generic Parsing--Unconsumed diagnostic. The dictionary carries forward block-by-block (same dict-merge pattern as VolatileVariableReadingSyntax) so a downstream consumer can read the most recent recorded value via SyntaxPiece linkage. Only literal numeric RHS values are consumed; non-literal RHS (e.g. #3002 = #500) is left in Parsing.Assignments for VariableEvaluatorSyntax to resolve, mirroring the retained / volatile reading syntaxes. Fanuc-family only — Siemens uses named system variables ($AC_TIME, $A_DAY, …) and Heidenhain uses FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn. public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucSystemControlVariableSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucSystemControlVariableSyntax() Default constructor. public FanucSystemControlVariableSyntax() FanucSystemControlVariableSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public FanucSystemControlVariableSyntax(XElement src) Parameters src XElement Fields SystemControlMax Inclusive upper bound of the system-control range (#3999). public const int SystemControlMax = 3999 Field Value int SystemControlMin Inclusive lower bound of the system-control range (#3000). public const int SystemControlMin = 3000 Field Value int UnsupportedDiagId Diagnostic id emitted for every consumed #3000-#3999 assignment — recognised by the parser, ignored by simulation. public const string UnsupportedDiagId = \"FanucSystemControl--Unsupported\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FanucSystemControlVariableSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Consumes Fanuc-style system-control variable assignments (#3000-#3999) — alarm trigger (#3000), millisecond and hour clocks (#3001 / #3002), single-block / feed-hold bypass flags (#3003 / #3004), pause-with-message (#3006), mirror-image flags (#3007), date / time (#3011 / #3012), tool-life data (#3030 / #3032), etc. Every id in this range is a controller-side state variable — its authoritative value lives on the real hardware (RTC, alarm bus, override switches, …) and an NC write at most triggers a side effect (clock reset, alarm raise, message-pause prompt). Offline simulation has none of that machinery, so this syntax does not emulate the effect. Instead it: records the literal write on the block JSON under Vars.SystemControl (round-trip and cache-dump visibility); emits a FanucSystemControl--Unsupported UnsupportedMessage(ISentenceCarrier, string, string, object) so the user knows the assignment was recognised but its controller-side effect is not simulated. Message-severity (not Warning) because these writes are safe no-ops offline — every consumed assignment would emit a Warning per block, which would be noisy without signalling anything the user must act on; removes the entry from Parsing.Assignments so it does not re-surface as a generic Parsing--Unconsumed diagnostic. The dictionary carries forward block-by-block (same dict-merge pattern as VolatileVariableReadingSyntax) so a downstream consumer can read the most recent recorded value via SyntaxPiece linkage. Only literal numeric RHS values are consumed; non-literal RHS (e.g. #3002 = #500) is left in Parsing.Assignments for VariableEvaluatorSyntax to resolve, mirroring the retained / volatile reading syntaxes. Fanuc-family only — Siemens uses named system variables ($AC_TIME, $A_DAY, …) and Heidenhain uses FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn. public class FanucSystemControlVariableSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucSystemControlVariableSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucSystemControlVariableSyntax() Default constructor. public FanucSystemControlVariableSyntax() FanucSystemControlVariableSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public FanucSystemControlVariableSyntax(XElement src) Parameters src XElement Fields SystemControlMax Inclusive upper bound of the system-control range (#3999). public const int SystemControlMax = 3999 Field Value int SystemControlMin Inclusive lower bound of the system-control range (#3000). public const int SystemControlMin = 3000 Field Value int UnsupportedDiagId Diagnostic id emitted for every consumed #3000-#3999 assignment — recognised by the parser, ignored by simulation. public const string UnsupportedDiagId = \"FanucSystemControl--Unsupported\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html", + "title": "Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc | HiAPI-C# 2025", + "summary": "Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Classes FanucGotoSyntax Resolves Fanuc Custom Macro B GOTO control flow. Triggered by Parsing.FanucGoto (written by FanucGotoParsingSyntax); decides whether to fire, and on fire calls ReplaceSource(IEnumerable) on layers[0] with the re-segmented file content starting at the matching N{target} label. The host block stays materialised (so cache dumps still see the GOTO call site); execution naturally continues from the new source once the pipeline pulls the next block. Both unconditional GOTO and conditional IF [] GOTO are implemented. The conditional form leans on VariableEvaluatorSyntax's pass-2 tree walk to substitute Parsing.FanucGoto.Condition with a numeric JsonValue when the expression evaluates successfully — ReadCondition(JsonNode) then reads the node polymorphically. Truthy non-zero fires the redirect; zero falls through silently; a still-string (unresolved) Condition emits FanucGoto--ConditionNotEvaluated and falls through. Pipeline placement: tail of the Fanuc / Mazak / Syntec Evaluation bundle. Must run after VariableEvaluatorSyntax so any # in the target N (e.g. GOTO #1) has been substituted to a literal in Parsing.FanucGoto.N. Reader syntaxes (VolatileVariableReadingSyntax etc.) are independent — they touch Parsing.Assignments, not Parsing.FanucGoto. Label scanning uses two hosted helper syntaxes — CommentSyntax and IndexSyntax — applied to each candidate block in turn so the predicate IndexNote.Number == target matches the same way the Parsing bundle would. Both are XML-IO-able so API customers can swap them (e.g. for a controller variant using ;-style comments or a different head symbol). Defaults match Fanuc: QuoteCommentSyntax and HeadIndexSyntax with the \"N\" symbol. FanucIfThenSyntax Resolves Fanuc Custom Macro B IF [] THEN single-block conditionals. Triggered by Parsing.FanucIfThen (written by FanucIfThenParsingSyntax); reads the now-resolved Condition node, decides whether to fire, and on fire lifts the parsing-stage PendingAssignments sub-object into the canonical Parsing.Assignments bucket so the brand-specific reader syntaxes downstream route each entry to its store the same way they would handle an unconditional #nnn = on a normal block. Unlike FanucGotoSyntax there is no source splice, no label scan, no iteration watchdog — the spec restricts the body to the current block. The host block is preserved either way (the stamped FanucIfThen section on the host's top-level JSON keeps the IF-THEN call site visible to cache dumps and diagnostics, with Applied flipped true only on a successful fire). Pipeline placement: in the Evaluation bundle after VariableEvaluatorSyntax (so the Condition expression has been substituted in place by pass-2 tree walk, and each PendingAssignments RHS string has been evaluated to a numeric JsonValue) and before the reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableReadingSyntax, FanucLocalVariableReadingSyntax, FanucSystemControlVariableSyntax) — that ordering lets the lifted entries reach the readers as if they had been written by TagAssignmentSyntax on a normal block. Three condition outcomes mirror the ReadCondition(JsonNode) shape: Truthy non-zero → lift assignments, stamp Applied=true. Truthy zero → fall through silently, Applied=false. Truthy null (evaluator failed, condition still a string or non-finite) → warn FanucIfThen--ConditionNotEvaluated, do not lift, Applied=false. A truthy condition with no PendingAssignments (body did not parse as one or more assignments — e.g. a G-code body, currently unsupported) warns FanucIfThen--UnsupportedBody and falls through. FanucLocalVariableReadingSyntax Routes literal-RHS assignments to Fanuc-style local macro variables (#1-#33) from Parsing.Assignments into Vars.Local on the current block, carrying the previous block's Vars.Local dict forward when both blocks share the same MacroFrame id. Mirrors VolatileVariableReadingSyntax for the #100-#499 range, with two differences: Carry is gated by MacroFrame equality, so a caller block after a G65 return does not inherit the macro body's final locals. Writes outside a macro frame (a main-program block doing #11 = 5) emit LocalVariable--MainFrameWriteUnsupported and consume the assignment without persisting — real Fanuc allows main-frame local writes but this simulator only tracks locals inside G65/G66 call frames; surfacing the gap as a diagnostic is more informative than a silent UnconsumedCheckSyntax hit. Pipeline placement: Evaluation bundle, after VariableEvaluatorSyntax (so any expression RHS such as #11 = #1 + 1 has already been normalised to a literal by the time this reader runs) and after the other range readers (RetainedCommonVariableReadingSyntax, VolatileVariableReadingSyntax) so they all share a similar Reader-stage shape. Only literal numeric RHS values are consumed here; non-literal entries (which can only persist if VariableEvaluatorSyntax failed to resolve them) are left untouched and surface via the evaluator's own VariableExpression--Unevaluated diagnostic plus UnconsumedCheckSyntax. FanucMacroArgumentMap Fanuc Custom Macro B Type-I argument-letter map: which call-line letter binds to which Vars.Local id (#1-#26) inside the macro body. Reserved letters (G, L, N, O, P) are absent — they are consumed by the call itself, not passed through. Used by FanucMacroCallSyntax (G65, one-shot) and FanucModalMacroSyntax (G66, modal) to translate the argument letters captured by G65Syntax / G66Syntax into the #nnn bindings the macro body's expression evaluator can read. FanucMacroCallSyntax Inlines a Fanuc Custom Macro B one-shot call (G65 P_ L_ [letter value …]) into the source layer and binds the call-line argument letters to Vars.Local #1-#26 per the Type-I map (see FanucMacroArgumentMap). Every inlined block carries the binding dict, a clone of the FanucMacroCall diagnostic record, and a MacroFrame id stamp — so LocalVariableLookup resolves arg references in a single-block lookup, a cache dump landing on any block immediately shows which call it belongs to, and downstream FanucLocalVariableReadingSyntax carries body-internal #1-#33 writes forward only within the same frame. The host block itself records FanucMacroCall but stays in the caller's frame (no MacroFrame stamp) and emits no motion act; after the macro body's last inlined block the pipeline continues naturally into the caller's next block (the inlined pieces sit ahead of the host block's successor in layers[0]). Frame isolation works on two layers. Statically, caller blocks have no MacroFrame stamp (frame id 0 by Get(JsonObject)), so the inlined frame ids (allocated fresh per L-repetition) never collide with main. Dynamically, LocalVariableLookup and FanucLocalVariableReadingSyntax compare frame ids before carrying any Vars.Local entry across a block boundary — a macro body's body-internal writes therefore stay inside the macro and never leak back into the caller's frame. Filename lookup mirrors SubProgramCallSyntax: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. The lookup root is InternalFolder (G65 has no \"external storage\" variant; M198's external root is M98/M198-only). L > 1 inlines the same macro L times in series. Each repetition is a fresh segmentation pass (so each block gets its own SyntaxPiece JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared) and gets a fresh FileIndex (so (FileIndex, LineIndex) pairs stay unique across the L-copies of the same source lines). Pipeline placement: ahead of SubProgramCallSyntax inside the Fanuc Evaluation BundleSyntax so a hypothetical G65 P_ + M98 P_ on the same block expands the G65 macro first (would be an unusual but legal composition). Detection is on the Parsing.G65 sub-object written by G65Syntax (a ParameterizedFlagSyntax) — the keyword \"G65\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. FanucModalMacroSyntax Handles Fanuc Custom Macro B modal-call lifecycle (G66 setup, G67 cancel, and per-motion-block implicit macro invocation). The same class is registered twice in the pipeline via Phase — once in the Evaluation bundle (Setup, captures G66/G67 edges and carries the FanucModalMacro state block-to-block) and once in the PostLogic bundle (Expansion, on every motion block within an active G66 modal, inlines the macro body via the same mechanism FanucMacroCallSyntax uses). Keeping both phases in one class makes the pairing visually explicit: readers see \"G66 in one file\" and the two methods (DoSetup, DoExpansion) make the lifecycle obvious. The two factory helpers (Setup, Expansion) mirror the ModalCarrySyntax.Logic / .PostLogic pattern already in the codebase. FanucSystemControlVariableSyntax Consumes Fanuc-style system-control variable assignments (#3000-#3999) — alarm trigger (#3000), millisecond and hour clocks (#3001 / #3002), single-block / feed-hold bypass flags (#3003 / #3004), pause-with-message (#3006), mirror-image flags (#3007), date / time (#3011 / #3012), tool-life data (#3030 / #3032), etc. Every id in this range is a controller-side state variable — its authoritative value lives on the real hardware (RTC, alarm bus, override switches, …) and an NC write at most triggers a side effect (clock reset, alarm raise, message-pause prompt). Offline simulation has none of that machinery, so this syntax does not emulate the effect. Instead it: records the literal write on the block JSON under Vars.SystemControl (round-trip and cache-dump visibility); emits a FanucSystemControl--Unsupported UnsupportedMessage(ISentenceCarrier, string, string, object) so the user knows the assignment was recognised but its controller-side effect is not simulated. Message-severity (not Warning) because these writes are safe no-ops offline — every consumed assignment would emit a Warning per block, which would be noisy without signalling anything the user must act on; removes the entry from Parsing.Assignments so it does not re-surface as a generic Parsing--Unconsumed diagnostic. The dictionary carries forward block-by-block (same dict-merge pattern as VolatileVariableReadingSyntax) so a downstream consumer can read the most recent recorded value via SyntaxPiece linkage. Only literal numeric RHS values are consumed; non-literal RHS (e.g. #3002 = #500) is left in Parsing.Assignments for VariableEvaluatorSyntax to resolve, mirroring the retained / volatile reading syntaxes. Fanuc-family only — Siemens uses named system variables ($AC_TIME, $A_DAY, …) and Heidenhain uses FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn. Enums FanucModalMacroSyntax.SyntaxPhase Identifies which pipeline phase the instance runs in. The two values correspond to the Evaluation-bundle and PostLogic-bundle registrations of this same syntax class." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html", + "title": "Class LabelScanUtil | HiAPI-C# 2025", + "summary": "Class LabelScanUtil Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Shared “re-segment a file and skip pieces until a label matches” scan, used by both FanucGotoSyntax (unconditional GOTO redirect) and SubProgramReturnSyntax (M99 P{seq} jump into the caller file). Reads the file via ReadLines(int, string, string), segments through the provided ISegmenter, runs the probeSyntaxes on each candidate block to extract IndexNote.Number, and returns the slice from the first matching block to EOF. Returns null when no block matches — the caller's responsibility to surface the appropriate diagnostic. The probes are idempotent because the downstream Parsing bundle re-runs the same syntaxes on the yielded pieces with no-op effect (the regex patterns no longer match once the N-prefix is consumed and the parenthesised comment stripped). public static class LabelScanUtil Inheritance object LabelScanUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods SegmentAndSkipUntilLabel(ISegmenter, string, string, int, int, int, List, NcDiagnosticProgress) Re-segments absPath from offset 0, scans for a block whose Number equals targetN (after the probeSyntaxes have stamped it in-place), and returns the sub-list of pieces from that block to EOF. Pieces are produced via GetSyntaxPieces(ISegmenter, IEnumerable, int, NcDiagnosticProgress, CancellationToken) with SentenceIndex stamped starting at sentenceIndexBegin. Returns null when no match is found; the caller emits its own brand-specific “label not found” diagnostic. The predicate is fixed at the IndexNote.Number section — the section name comes from nameof() so a future rename propagates without re-edits. Reconfigurability for non-standard label-output sections is achieved by replacing the probe syntaxes (the natural extension point) rather than parameterising the predicate path here: a probe stack that doesn't end up writing IndexNote on candidates is by definition not participating in this scan. public static List SegmentAndSkipUntilLabel(ISegmenter segmenter, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, int targetN, List probeSyntaxes, NcDiagnosticProgress diag) Parameters segmenter ISegmenter Segmenter used to slice the file into Sentence blocks. absPath string Absolute path to read line content from. labelPath string Project-relative path to stamp on each line's IndexedFileLine label (so diagnostics anchor to a relative form, not the resolver's transient absolute path). fileIndex int Fresh file index to stamp on each scanned line, allocated by the caller from FileIndexCounterDependency. sentenceIndexBegin int Starting execution-order index for the produced pieces. targetN int Integer label target to match against Number. probeSyntaxes List Ordered list of helper syntaxes to run on each candidate block before the predicate check (typically comment-stripper(s) followed by a head-index parser). May be null. diag NcDiagnosticProgress Sink for any diagnostics produced by the probe syntaxes (e.g. comment-stripper malformed-comment warnings). Returns List" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html", + "title": "Struct MacroFileResolver.ResolvedFile | HiAPI-C# 2025", + "summary": "Struct MacroFileResolver.ResolvedFile Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Tri-form resolution result. FileName is the bare matched name; RelPath is that name joined with the folder portion of the dependency (relative when the folder is configured relative, absolute fallback when it isn't); AbsPath is the fully-resolved I/O target. public readonly record struct MacroFileResolver.ResolvedFile : IEquatable Implements IEquatable Inherited Members ValueType.Equals(object) ValueType.GetHashCode() ValueType.ToString() object.Equals(object, object) object.GetType() object.ReferenceEquals(object, object) Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ResolvedFile(string, string, string) Tri-form resolution result. FileName is the bare matched name; RelPath is that name joined with the folder portion of the dependency (relative when the folder is configured relative, absolute fallback when it isn't); AbsPath is the fully-resolved I/O target. public ResolvedFile(string FileName, string RelPath, string AbsPath) Parameters FileName string RelPath string AbsPath string Properties AbsPath public string AbsPath { get; init; } Property Value string FileName public string FileName { get; init; } Property Value string RelPath public string RelPath { get; init; } Property Value string" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html", + "title": "Class MacroFileResolver | HiAPI-C# 2025", + "summary": "Class MacroFileResolver Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Shared subprogram-/macro-file resolver for Fanuc-style O lookups consumed by SubProgramCallSyntax (M98 / M198) and FanucMacroCallSyntax (G65). Single helper so the three path forms — file name, project-relative path, absolute path — are produced together at one site and each caller gets exactly the form it should consume: FileName — bare O####.NC form the resolver matched. Stored in JSON sections (FanucMacroCall, SubProgramCall) as the structural NC-language identifier; independent of which folder the dependency happened to be pointing at, so the JSON stays portable across environments. RelPath — relative path against the project base directory (e.g. \"NC/O1234.NC\"). Used as the IndexedFileLine label so diagnostics on inlined blocks align with the relative form already used for the main file label. AbsPath — absolute path. Used only at the ReadLines(int, string, string) call site for actual disk I/O; never persisted, never returned to JSON. Lives inside the resolver's stack frame and the segmenter's enumeration. Filename lookup order (first match wins) mirrors real Fanuc fallback: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). public static class MacroFileResolver Inheritance object MacroFileResolver Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields FilenamePatterns Filename-resolution fallback chain. Patterns are formatted with the P parameter as the only positional arg. public static readonly string[] FilenamePatterns Field Value string[] Methods ReadLines(int, string, string) Streams IndexedFileLine entries from absPath but stamps each entry's FilePath with the project-relative labelPath. Mirrors the manual loop in GetIndexedFileLines(string, IEnumerable, int, NcDiagnosticProgress, CancellationToken) for the main file so inlined macros stay consistent with the rest of the pipeline (diagnostics anchored to a relative label, not the resolver's transient absolute path). public static IEnumerable ReadLines(int fileIndex, string absPath, string labelPath) Parameters fileIndex int absPath string labelPath string Returns IEnumerable Resolve(string, int, string) Resolves an O

    file against the given folder, returning all three path forms. Returns null when the folder cannot be anchored (relative folder but no baseDirectory), the resolved folder does not exist, or no filename pattern matched. folder may be absolute (used as-is) or relative (combined with baseDirectory). Empty / null folder means \"look directly in baseDirectory\". When the folder is absolute, RelPath falls back to absolute too — there's no natural relative form when the user explicitly configured an out-of-project folder. public static MacroFileResolver.ResolvedFile? Resolve(string folder, int p, string baseDirectory) Parameters folder string p int baseDirectory string Returns MacroFileResolver.ResolvedFile?" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html", + "title": "Class MacroInlineUtil | HiAPI-C# 2025", + "summary": "Class MacroInlineUtil Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Shared inline mechanism for Fanuc Custom Macro B body expansion — used by both FanucMacroCallSyntax (one-shot) and FanucModalMacroSyntax's expansion phase (modal trigger). Both callers do the same three things on every produced SyntaxPiece: stamp a FanucMacroCall clone, stamp a fresh MacroFrame id, and stamp argument bindings into Vars.Local. Centralising lets the two call sites stay in lock-step — frame allocation, file-index allocation, and the inline-piece JSON shape are guaranteed identical. Frame ids share the same FileIndexCounterDependency counter as file indices — both just need within-session uniqueness and the counter is rewound on session start in lock-step with the pipeline. The main NC file is allocated index 0 first, so all inline frame ids land at > 0 and never collide with main. public static class MacroInlineUtil Inheritance object MacroInlineUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ApplyLocalBindings(JsonObject, IReadOnlyDictionary) Writes the resolved #N → value bindings into Vars.Local on the given block. No-op when bindings is empty. Always overwrites any pre-existing Vars.Local on the block — for inlined macro bodies this is a fresh stamp. public static void ApplyLocalBindings(JsonObject json, IReadOnlyDictionary bindings) Parameters json JsonObject bindings IReadOnlyDictionary BuildInlinedPieces(ResolvedFile, int, IReadOnlyDictionary, JsonObject, JsonObject, FileIndexCounterDependency, ISegmenter, int, NcDiagnosticProgress) Yields L repetitions of the macro body as inline-ready SyntaxPiece entries. Each repetition gets its own freshly-allocated FileIndex and MacroFrame id; every yielded piece is stamped with a deep clone of callRecord, the frame id, and the resolved #N → value bindings. The caller passes the result to LazyLinkedList.PrependSource on the source layer. public static IEnumerable BuildInlinedPieces(MacroFileResolver.ResolvedFile resolvedFile, int l, IReadOnlyDictionary bindings, JsonObject callRecord, JsonObject pushedCallStack, FileIndexCounterDependency counterDep, ISegmenter segmenter, int sentenceIndexBegin, NcDiagnosticProgress ncDiagnosticProgress) Parameters resolvedFile MacroFileResolver.ResolvedFile l int bindings IReadOnlyDictionary callRecord JsonObject pushedCallStack JsonObject counterDep FileIndexCounterDependency segmenter ISegmenter sentenceIndexBegin int ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable BuildLocalBindings(JsonObject) Translates the argument-letter map captured by the host call ({ “A”: 1.5, “B”: 2.0, ... }) into the #N → value bindings the macro body's expression evaluator will read off Vars.Local. Skips non-numeric (string) args silently — those are unresolved variable references that the evaluator's own VariableExpression–Unevaluated diagnostic will surface; writing a string into Vars.Local would just propagate the residue. public static Dictionary BuildLocalBindings(JsonObject args) Parameters args JsonObject Returns Dictionary" }, "api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html", "title": "Class RetainedCommonVariableReadingSyntax | HiAPI-C# 2025", - "summary": "Class RetainedCommonVariableReadingSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Obtains values for Fanuc-style retained common variables (#500-#999) by consuming literal numeric assignments from Parsing.Assignments.#nnn and writing them straight to a registered RetainedCommonVariableTable. No SyntaxPiece JSON mirror is created — the table is the single source of truth for retained values, and VariableEvaluatorSyntax reads from the table directly. The hincproj round-trip preserves writes across project sessions. Only literal numeric RHS values are consumed by this syntax (#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result through the same table. The two syntaxes are decoupled. If no RetainedCommonVariableTable is registered on the runner's NcDependencyList, this syntax is a no-op. public class RetainedCommonVariableReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object RetainedCommonVariableReadingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RetainedCommonVariableReadingSyntax() Default constructor. public RetainedCommonVariableReadingSyntax() RetainedCommonVariableReadingSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public RetainedCommonVariableReadingSyntax(XElement src) Parameters src XElement Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class RetainedCommonVariableReadingSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Obtains values for Fanuc-style retained common variables (#500-#999) by consuming literal numeric assignments from Parsing.Assignments.#nnn and writing them straight to a registered RetainedCommonVariableTable. No SyntaxPiece JSON mirror is created — the table is the single source of truth for retained values, and VariableEvaluatorSyntax reads from the table directly. The hincproj round-trip preserves writes across project sessions. Only literal numeric RHS values are consumed by this syntax (#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result through the same table. The two syntaxes are decoupled. If no RetainedCommonVariableTable is registered on the runner's NcDependencyList, this syntax is a no-op. public class RetainedCommonVariableReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object RetainedCommonVariableReadingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RetainedCommonVariableReadingSyntax() Default constructor. public RetainedCommonVariableReadingSyntax() RetainedCommonVariableReadingSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public RetainedCommonVariableReadingSyntax(XElement src) Parameters src XElement Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax.html", "title": "Class SubProgramCallSyntax | HiAPI-C# 2025", - "summary": "Class SubProgramCallSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Inlines a Fanuc-style subprogram into the source layer when an M98 or M198 host block is reached. M98 P_ L_ reads the matching O

    file from InternalFolder; M198 P_ reads from ExternalFolder (Fanuc external-storage call — same mechanism as M98, different lookup root). The file is segmented through the host runner's segmenter (SegmenterDependency) and the resulting SyntaxPieces are prepended into layers[0] via PrependSource(IEnumerable); the rest of the pipeline picks them up through ordinary walkNode.Next traversal as if they had always been part of the host file. Pipeline placement: first child of the Fanuc Evaluation BundleSyntax. By the time this runs, M98Syntax / M198Syntax (each a ParameterizedFlagSyntax) have written a Parsing.M98 / Parsing.M198 sub-object carrying the captured P / L parameters. Note: those sub-objects are this syntax's only trigger — \"M98\" / \"M198\" never reach Parsing.Flags, because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. Filename lookup uses a fallback chain: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). L > 1 inlines the same subprogram L times in series. Each repetition is a fresh segmentation pass so each block gets its own SyntaxPiece with an independent JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared. Not yet supported: M99 P{seq} early return inside a subprogram, partial-program calls (M98 P{seq}{prog} split encoding), and arg binding (G65 macro is a separate syntax). public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SubProgramCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubProgramCallSyntax() Parameterless instance for bundle composition (no XML state). public SubProgramCallSyntax() SubProgramCallSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public SubProgramCallSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class SubProgramCallSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Inlines a Fanuc-style subprogram into the source layer when an M98 or M198 host block is reached. M98 P_ L_ reads the matching O

    file from InternalFolder; M198 P_ reads from ExternalFolder (Fanuc external-storage call — same mechanism as M98, different lookup root). The file is segmented through the host runner's segmenter (SegmenterDependency) and the resulting SyntaxPieces are prepended into layers[0] via PrependSource(IEnumerable); the rest of the pipeline picks them up through ordinary walkNode.Next traversal as if they had always been part of the host file. Pipeline placement: first child of the Fanuc Evaluation BundleSyntax. By the time this runs, M98Syntax / M198Syntax (each a ParameterizedFlagSyntax) have written a Parsing.M98 / Parsing.M198 sub-object carrying the captured P / L parameters. Note: those sub-objects are this syntax's only trigger — \"M98\" / \"M198\" never reach Parsing.Flags, because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. Filename lookup uses a fallback chain: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). L > 1 inlines the same subprogram L times in series. Each repetition is a fresh segmentation pass so each block gets its own SyntaxPiece with an independent JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared. Not yet supported: M99 P{seq} early return inside a subprogram and partial-program calls (M98 P{seq}{prog} split encoding). Custom Macro B argument-binding calls (G65 / G66 / G67) live in FanucMacroCallSyntax and FanucModalMacroSyntax — those handle the argument-letter-to-#1..#26 binding and the macro-call frame isolation that M98 deliberately does not provide. public class SubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SubProgramCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubProgramCallSyntax() Parameterless instance for bundle composition (no XML state). public SubProgramCallSyntax() SubProgramCallSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public SubProgramCallSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html", "title": "Class SubProgramReturnSyntax | HiAPI-C# 2025", - "summary": "Class SubProgramReturnSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Consumes Fanuc-style M99 subprogram-return blocks. In the inline model used by SubProgramCallSyntax, a plain M99 at the end of a subprogram is implicit: the inlined blocks are followed in layers[0] by the caller's next block, so the natural pipeline traversal already does the \"return\". This syntax therefore only consumes the M99 flag (so UnconsumedCheckSyntax doesn't warn) and records a SubProgramReturn section for cache-dump visibility. M99 P{seq} (return to caller's N{seq} sequence number) is captured in P but not yet honoured — the subprogram tail still proceeds straight into the caller's next block. Implementing the jump requires a forward scan of the post-host caller blocks for a matching N{seq} head index, then dropping the intervening blocks; deferred until the caller-side walk semantics are designed. Pipeline placement: anywhere after Parsing has populated Parsing.M99. Conventionally placed alongside SubProgramCallSyntax at the head of the Evaluation bundle so call/return live next to each other. Detection is on the Parsing.M99 sub-object written by M99Syntax (a ParameterizedFlagSyntax) — the keyword \"M99\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SubProgramReturnSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubProgramReturnSyntax() Parameterless instance for bundle composition (no XML state). public SubProgramReturnSyntax() SubProgramReturnSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public SubProgramReturnSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class SubProgramReturnSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Consumes Fanuc-style M99 subprogram-return blocks and pops one CallStack frame. Plain M99 relies on the natural pipeline tail — the inlined body's last block is followed in layers[0] by the caller's next block, so the “return” happens implicitly; this syntax only consumes the M99 trigger (so UnconsumedCheckSyntax doesn't warn), stamps a SubProgramReturn diagnostic section, and writes the popped CallStack for downstream blocks to carry. M99 P{seq} additionally redirects control flow to the caller's N{seq} block via ReplaceSource(IEnumerable). The caller's file is resolved from the popped frame's CallerFilePath; the scan uses the same SegmentAndSkipUntilLabel(ISegmenter, string, string, int, int, int, List, NcDiagnosticProgress) helper as FanucGotoSyntax, with hardcoded Fanuc-default probes (QuoteCommentSyntax + HeadIndexSyntax with symbol \"N\") because the M99 P semantic itself is Fanuc-family-only and Mazak / Syntec follow the same conventions. The iteration is counted against FanucGotoIterationDependency, sharing the same runaway-loop guard as GOTO — keyed on the same (FileName, TargetN) bucket so a tight M98 → M99 P → M98 … loop trips the same threshold. Pipeline placement: same Evaluation bundle slot it always occupied, right after SubProgramCallSyntax at the head. Needs FanucGotoIterationDependency, ProjectFolderDependency, SegmenterDependency, SyntaxPieceLayerDependency, FileIndexCounterDependency on the dep list when M99 P{seq} is to fire; without them the plain-M99 path still works and the P-jump emits a configuration warning. Detection is on the Parsing.M99 sub-object written by M99Syntax (a ParameterizedFlagSyntax) — the keyword \"M99\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. public class SubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SubProgramReturnSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SubProgramReturnSyntax() Parameterless instance with default probe list. public SubProgramReturnSyntax() SubProgramReturnSyntax(XElement, string, IProgress) Loads LabelProbeSyntaxes from XML produced by MakeXmlSource(string, string, bool). An absent wrapper falls back to the default probe list. public SubProgramReturnSyntax(XElement src, string baseDirectory, IProgress progress) Parameters src XElement Root element named XName. baseDirectory string Project base directory propagated to child XFactory calls. progress IProgress Diagnostic sink propagated to child factories. Properties LabelProbeSyntaxes Ordered list of probe syntaxes run on each candidate block during the M99 P{seq} caller-side scan, before the integer label predicate fires. Defaults match Fanuc / Mazak / Syntec (parenthesised comment stripper + N head-index parser); API customers can swap or extend (e.g. add a TailCommentSyntax for ; end-of-block comments, or insert a BlockSkipSyntax to exclude /-prefixed candidates) without subclassing. Mirrors the same hosted-list pattern as LabelProbeSyntaxes. public List LabelProbeSyntaxes { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html", "title": "Class VariableEvaluatorSyntax | HiAPI-C# 2025", - "summary": "Class VariableEvaluatorSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Pure expression normalizer for Custom Macro B syntax. Walks the parser-stage residue on a single block and inlines numeric values wherever a Fanuc-style variable reference or bracket expression appears — but does not write to any specific store. Routing “where the resolved literal lands” stays in the brand-specific reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableTable's reader, FanucSystemControlVariableSyntax, …) which run after this syntax on the same block. Two passes per block: Assignments normalize — Parsing.Assignments.#nnn entries whose RHS is non-literal (e.g. \"#500+1\", \"SQRT[#100]\") are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is replaced with the resolved literal (round-trip-safe \"R\"-format). The entry stays in Parsing.Assignments so downstream reader syntaxes consume it as a pure-literal assignment. Iteration follows source order (Parsing.Assignments insertion order). Parsing tree substitution — every string-typed value reachable from Parsing. (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric JsonValue. Failures silently leave the original string and rely on downstream GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read. Lookup chain (first non-null wins, configured per brand preset via RuntimeVariableLookups + IVariableLookup instances on NcDependencyList): Current block's own resolved assignments — built-in to VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in source order (an earlier #nnn=literal is visible to a later RHS that mentions #nnn). Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order. Typical contents for a Fanuc-family preset: LocalVariableLookup (#1-#33), VolatileVariableLookup (#100-#499), FanucPositionVariableLookup (#5001-#5043). Each IVariableLookup on the runner's NcDependencyList, in registration order (RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetVariableLookup). Each lookup self-gates its id range; the evaluator stays brand- and range-agnostic. Adding a new variable surface is additive: register an IVariableLookup on a dependency or push an IRuntimeVariableLookup onto the per-preset list. Same-block forward reference — when an Assignment RHS references a #nnn that is also being assigned later in the same block (i.e. listed in Parsing.Assignments after the RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up the not-yet-resolved value and falls back to traceback / dependency-table reads — effectively the pre-block value. A VariableEvaluator--SameBlockForwardReference warning is emitted per such RHS so the user is told the source-order semantics were not honoured. Practical impact is near-zero for typical CAM-emitted NC (one assignment per line). public class VariableEvaluatorSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object VariableEvaluatorSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors VariableEvaluatorSyntax() Default constructor. public VariableEvaluatorSyntax() VariableEvaluatorSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public VariableEvaluatorSyntax(XElement src) Parameters src XElement Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string RuntimeVariableLookups Per-preset list of context-sensitive lookups (block-local Vars.Local / Vars.Volatile, position reads, runtime-state reads). Walked in list order, before the dependency-bound IVariableLookups. Brand presets configure this — instances are not XML-serialised because they are brand-determined behaviour, not project state. public List RuntimeVariableLookups { get; set; } Property Value List XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class VariableEvaluatorSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Pure expression normalizer for Custom Macro B syntax. Walks the parser-stage residue on a single block and inlines numeric values wherever a Fanuc-style variable reference or bracket expression appears — but does not write to any specific store. Routing “where the resolved literal lands” stays in the brand-specific reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableTable's reader, FanucSystemControlVariableSyntax, …) which run after this syntax on the same block. Two passes per block: Assignments normalize — Parsing.Assignments.#nnn entries whose RHS is non-literal (e.g. \"#500+1\", \"SQRT[#100]\") are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is replaced with the resolved literal (round-trip-safe \"R\"-format). The entry stays in Parsing.Assignments so downstream reader syntaxes consume it as a pure-literal assignment. Iteration follows source order (Parsing.Assignments insertion order). Parsing tree substitution — every string-typed value reachable from Parsing. (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric JsonValue. Failures silently leave the original string and rely on downstream GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read. Lookup chain (first non-null wins, configured per brand preset via RuntimeVariableLookups + IVariableLookup instances on NcDependencyList): Current block's own resolved assignments — built-in to VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in source order (an earlier #nnn=literal is visible to a later RHS that mentions #nnn). Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order. Typical contents for a Fanuc-family preset: LocalVariableLookup (#1-#33), VolatileVariableLookup (#100-#499), FanucPositionVariableLookup (#5001-#5043). Each IVariableLookup on the runner's NcDependencyList, in registration order (RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetVariableLookup). Each lookup self-gates its id range; the evaluator stays brand- and range-agnostic. Adding a new variable surface is additive: register an IVariableLookup on a dependency or push an IRuntimeVariableLookup onto the per-preset list. Same-block forward reference — when an Assignment RHS references a #nnn that is also being assigned later in the same block (i.e. listed in Parsing.Assignments after the RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up the not-yet-resolved value and falls back to traceback / dependency-table reads — effectively the pre-block value. A VariableEvaluator--SameBlockForwardReference warning is emitted per such RHS so the user is told the source-order semantics were not honoured. Practical impact is near-zero for typical CAM-emitted NC (one assignment per line). public class VariableEvaluatorSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object VariableEvaluatorSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors VariableEvaluatorSyntax() Default constructor. public VariableEvaluatorSyntax() VariableEvaluatorSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool); restores RuntimeVariableLookups via XFactory dispatch. public VariableEvaluatorSyntax(XElement src) Parameters src XElement Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string RuntimeVariableLookups Per-preset list of context-sensitive lookups (block-local Vars.Local / Vars.Volatile, position reads, runtime-state reads). Walked in list order, before the dependency-bound IVariableLookups. Brand presets configure this; the list is XML-serialised so a runner rebuilt from XML keeps its brand-specific lookups (each impl is stateless and dispatches by its XName via XFactory). public List RuntimeVariableLookups { get; set; } Property Value List XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.VolatileVariableReadingSyntax.html", "title": "Class VolatileVariableReadingSyntax | HiAPI-C# 2025", - "summary": "Class VolatileVariableReadingSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Obtains values for Fanuc-style non-retained common variables (#100-#499). Reads literal numeric assignments from Parsing.Assignments.#nnn, dict-merges them with the previous block's volatile state, and writes the resulting per-block dictionary into Vars.Volatile. Lifetime is bounded by MachiningSession: within one session the dictionary carries forward block-by-block via this syntax; session restart abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end (M02/M30) clearing is handled by ProgramEndCleanSyntax. Only literal numeric RHS values are consumed by this syntax (#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result into the same per-block dictionary. The two syntaxes are decoupled — the evaluator's lookup tracebacks via SyntaxPiece linkage so it does not depend on having run before or after this syntax. public class VolatileVariableReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object VolatileVariableReadingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors VolatileVariableReadingSyntax() Default constructor. public VolatileVariableReadingSyntax() VolatileVariableReadingSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public VolatileVariableReadingSyntax(XElement src) Parameters src XElement Fields VolatileMax Inclusive upper bound of the non-retained common range (#499). public const int VolatileMax = 499 Field Value int VolatileMin Inclusive lower bound of the non-retained common range (#100). public const int VolatileMin = 100 Field Value int Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class VolatileVariableReadingSyntax Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Obtains values for Fanuc-style non-retained common variables (#100-#499). Reads literal numeric assignments from Parsing.Assignments.#nnn, dict-merges them with the previous block's volatile state, and writes the resulting per-block dictionary into Vars.Volatile. Lifetime is bounded by MachiningSession: within one session the dictionary carries forward block-by-block via this syntax; session restart abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end (M02/M30) clearing is handled by ProgramEndCleanSyntax. Only literal numeric RHS values are consumed by this syntax (#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result into the same per-block dictionary. The two syntaxes are decoupled — the evaluator's lookup tracebacks via SyntaxPiece linkage so it does not depend on having run before or after this syntax. public class VolatileVariableReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object VolatileVariableReadingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors VolatileVariableReadingSyntax() Default constructor. public VolatileVariableReadingSyntax() VolatileVariableReadingSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public VolatileVariableReadingSyntax(XElement src) Parameters src XElement Fields VolatileMax Inclusive upper bound of the non-retained common range (#499). public const int VolatileMax = 499 Field Value int VolatileMin Inclusive lower bound of the non-retained common range (#100). public const int VolatileMin = 100 Field Value int Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.EvaluationSyntaxs.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.html", "title": "Namespace Hi.NcParsers.EvaluationSyntaxs | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.EvaluationSyntaxs Classes FanucSystemControlVariableSyntax Consumes Fanuc-style system-control variable assignments (#3000-#3999) — alarm trigger (#3000), millisecond and hour clocks (#3001 / #3002), single-block / feed-hold bypass flags (#3003 / #3004), pause-with-message (#3006), mirror-image flags (#3007), date / time (#3011 / #3012), tool-life data (#3030 / #3032), etc. Every id in this range is a controller-side state variable — its authoritative value lives on the real hardware (RTC, alarm bus, override switches, …) and an NC write at most triggers a side effect (clock reset, alarm raise, message-pause prompt). Offline simulation has none of that machinery, so this syntax does not emulate the effect. Instead it: records the literal write on the block JSON under Vars.SystemControl (round-trip and cache-dump visibility); emits a FanucSystemControl--Unsupported UnsupportedMessage(Sentence, string, string, object) so the user knows the assignment was recognised but its controller-side effect is not simulated. Message-severity (not Warning) because these writes are safe no-ops offline — every consumed assignment would emit a Warning per block, which would be noisy without signalling anything the user must act on; removes the entry from Parsing.Assignments so it does not re-surface as a generic Parsing--Unconsumed diagnostic. The dictionary carries forward block-by-block (same dict-merge pattern as VolatileVariableReadingSyntax) so a downstream consumer can read the most recent recorded value via SyntaxPiece linkage. Only literal numeric RHS values are consumed; non-literal RHS (e.g. #3002 = #500) is left in Parsing.Assignments for VariableEvaluatorSyntax to resolve, mirroring the retained / volatile reading syntaxes. Fanuc-family only — Siemens uses named system variables ($AC_TIME, $A_DAY, …) and Heidenhain uses FN18: SYSREAD; neither flows through Parsing.Assignments.#nnn. RetainedCommonVariableReadingSyntax Obtains values for Fanuc-style retained common variables (#500-#999) by consuming literal numeric assignments from Parsing.Assignments.#nnn and writing them straight to a registered RetainedCommonVariableTable. No SyntaxPiece JSON mirror is created — the table is the single source of truth for retained values, and VariableEvaluatorSyntax reads from the table directly. The hincproj round-trip preserves writes across project sessions. Only literal numeric RHS values are consumed by this syntax (#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result through the same table. The two syntaxes are decoupled. If no RetainedCommonVariableTable is registered on the runner's NcDependencyList, this syntax is a no-op. SubProgramCallSyntax Inlines a Fanuc-style subprogram into the source layer when an M98 or M198 host block is reached. M98 P_ L_ reads the matching O

    file from InternalFolder; M198 P_ reads from ExternalFolder (Fanuc external-storage call — same mechanism as M98, different lookup root). The file is segmented through the host runner's segmenter (SegmenterDependency) and the resulting SyntaxPieces are prepended into layers[0] via PrependSource(IEnumerable); the rest of the pipeline picks them up through ordinary walkNode.Next traversal as if they had always been part of the host file. Pipeline placement: first child of the Fanuc Evaluation BundleSyntax. By the time this runs, M98Syntax / M198Syntax (each a ParameterizedFlagSyntax) have written a Parsing.M98 / Parsing.M198 sub-object carrying the captured P / L parameters. Note: those sub-objects are this syntax's only trigger — \"M98\" / \"M198\" never reach Parsing.Flags, because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. Filename lookup uses a fallback chain: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). L > 1 inlines the same subprogram L times in series. Each repetition is a fresh segmentation pass so each block gets its own SyntaxPiece with an independent JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared. Not yet supported: M99 P{seq} early return inside a subprogram, partial-program calls (M98 P{seq}{prog} split encoding), and arg binding (G65 macro is a separate syntax). SubProgramReturnSyntax Consumes Fanuc-style M99 subprogram-return blocks. In the inline model used by SubProgramCallSyntax, a plain M99 at the end of a subprogram is implicit: the inlined blocks are followed in layers[0] by the caller's next block, so the natural pipeline traversal already does the \"return\". This syntax therefore only consumes the M99 flag (so UnconsumedCheckSyntax doesn't warn) and records a SubProgramReturn section for cache-dump visibility. M99 P{seq} (return to caller's N{seq} sequence number) is captured in P but not yet honoured — the subprogram tail still proceeds straight into the caller's next block. Implementing the jump requires a forward scan of the post-host caller blocks for a matching N{seq} head index, then dropping the intervening blocks; deferred until the caller-side walk semantics are designed. Pipeline placement: anywhere after Parsing has populated Parsing.M99. Conventionally placed alongside SubProgramCallSyntax at the head of the Evaluation bundle so call/return live next to each other. Detection is on the Parsing.M99 sub-object written by M99Syntax (a ParameterizedFlagSyntax) — the keyword \"M99\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. VariableEvaluatorSyntax Pure expression normalizer for Custom Macro B syntax. Walks the parser-stage residue on a single block and inlines numeric values wherever a Fanuc-style variable reference or bracket expression appears — but does not write to any specific store. Routing “where the resolved literal lands” stays in the brand-specific reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableTable's reader, FanucSystemControlVariableSyntax, …) which run after this syntax on the same block. Two passes per block: Assignments normalize — Parsing.Assignments.#nnn entries whose RHS is non-literal (e.g. \"#500+1\", \"SQRT[#100]\") are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is replaced with the resolved literal (round-trip-safe \"R\"-format). The entry stays in Parsing.Assignments so downstream reader syntaxes consume it as a pure-literal assignment. Iteration follows source order (Parsing.Assignments insertion order). Parsing tree substitution — every string-typed value reachable from Parsing. (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric JsonValue. Failures silently leave the original string and rely on downstream GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read. Lookup chain (first non-null wins, configured per brand preset via RuntimeVariableLookups + IVariableLookup instances on NcDependencyList): Current block's own resolved assignments — built-in to VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in source order (an earlier #nnn=literal is visible to a later RHS that mentions #nnn). Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order. Typical contents for a Fanuc-family preset: LocalVariableLookup (#1-#33), VolatileVariableLookup (#100-#499), FanucPositionVariableLookup (#5001-#5043). Each IVariableLookup on the runner's NcDependencyList, in registration order (RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetVariableLookup). Each lookup self-gates its id range; the evaluator stays brand- and range-agnostic. Adding a new variable surface is additive: register an IVariableLookup on a dependency or push an IRuntimeVariableLookup onto the per-preset list. Same-block forward reference — when an Assignment RHS references a #nnn that is also being assigned later in the same block (i.e. listed in Parsing.Assignments after the RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up the not-yet-resolved value and falls back to traceback / dependency-table reads — effectively the pre-block value. A VariableEvaluator--SameBlockForwardReference warning is emitted per such RHS so the user is told the source-order semantics were not honoured. Practical impact is near-zero for typical CAM-emitted NC (one assignment per line). VolatileVariableReadingSyntax Obtains values for Fanuc-style non-retained common variables (#100-#499). Reads literal numeric assignments from Parsing.Assignments.#nnn, dict-merges them with the previous block's volatile state, and writes the resulting per-block dictionary into Vars.Volatile. Lifetime is bounded by MachiningSession: within one session the dictionary carries forward block-by-block via this syntax; session restart abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end (M02/M30) clearing is handled by ProgramEndCleanSyntax. Only literal numeric RHS values are consumed by this syntax (#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result into the same per-block dictionary. The two syntaxes are decoupled — the evaluator's lookup tracebacks via SyntaxPiece linkage so it does not depend on having run before or after this syntax." + "summary": "Namespace Hi.NcParsers.EvaluationSyntaxs Classes CallStackUtil Push / pop helpers for the per-block CallStack section. Both produce a fresh deep-cloned JsonObject ready to stamp onto an inlined piece (push site) or onto an M99 return block (pop site); the caller is responsible for deep-cloning again if it distributes the same stamp across multiple pieces of an L-repetition. Pairs with ModalCarrySyntax at the Logic stage: explicit push / pop writes seed the section at frame boundaries, ModalCarry copies it forward to every block in between so each block is self-contained for cache-dump readers and downstream consumers (notably M99 P{seq} reading the top frame's CallerFilePath). LabelScanUtil Shared “re-segment a file and skip pieces until a label matches” scan, used by both FanucGotoSyntax (unconditional GOTO redirect) and SubProgramReturnSyntax (M99 P{seq} jump into the caller file). Reads the file via ReadLines(int, string, string), segments through the provided ISegmenter, runs the probeSyntaxes on each candidate block to extract IndexNote.Number, and returns the slice from the first matching block to EOF. Returns null when no block matches — the caller's responsibility to surface the appropriate diagnostic. The probes are idempotent because the downstream Parsing bundle re-runs the same syntaxes on the yielded pieces with no-op effect (the regex patterns no longer match once the N-prefix is consumed and the parenthesised comment stripped). MacroFileResolver Shared subprogram-/macro-file resolver for Fanuc-style O lookups consumed by SubProgramCallSyntax (M98 / M198) and FanucMacroCallSyntax (G65). Single helper so the three path forms — file name, project-relative path, absolute path — are produced together at one site and each caller gets exactly the form it should consume: FileName — bare O####.NC form the resolver matched. Stored in JSON sections (FanucMacroCall, SubProgramCall) as the structural NC-language identifier; independent of which folder the dependency happened to be pointing at, so the JSON stays portable across environments. RelPath — relative path against the project base directory (e.g. \"NC/O1234.NC\"). Used as the IndexedFileLine label so diagnostics on inlined blocks align with the relative form already used for the main file label. AbsPath — absolute path. Used only at the ReadLines(int, string, string) call site for actual disk I/O; never persisted, never returned to JSON. Lives inside the resolver's stack frame and the segmenter's enumeration. Filename lookup order (first match wins) mirrors real Fanuc fallback: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). MacroInlineUtil Shared inline mechanism for Fanuc Custom Macro B body expansion — used by both FanucMacroCallSyntax (one-shot) and FanucModalMacroSyntax's expansion phase (modal trigger). Both callers do the same three things on every produced SyntaxPiece: stamp a FanucMacroCall clone, stamp a fresh MacroFrame id, and stamp argument bindings into Vars.Local. Centralising lets the two call sites stay in lock-step — frame allocation, file-index allocation, and the inline-piece JSON shape are guaranteed identical. Frame ids share the same FileIndexCounterDependency counter as file indices — both just need within-session uniqueness and the counter is rewound on session start in lock-step with the pipeline. The main NC file is allocated index 0 first, so all inline frame ids land at > 0 and never collide with main. RetainedCommonVariableReadingSyntax Obtains values for Fanuc-style retained common variables (#500-#999) by consuming literal numeric assignments from Parsing.Assignments.#nnn and writing them straight to a registered RetainedCommonVariableTable. No SyntaxPiece JSON mirror is created — the table is the single source of truth for retained values, and VariableEvaluatorSyntax reads from the table directly. The hincproj round-trip preserves writes across project sessions. Only literal numeric RHS values are consumed by this syntax (#500 = 1.234 ✓; #600 = #500 + 1 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result through the same table. The two syntaxes are decoupled. If no RetainedCommonVariableTable is registered on the runner's NcDependencyList, this syntax is a no-op. SubProgramCallSyntax Inlines a Fanuc-style subprogram into the source layer when an M98 or M198 host block is reached. M98 P_ L_ reads the matching O

    file from InternalFolder; M198 P_ reads from ExternalFolder (Fanuc external-storage call — same mechanism as M98, different lookup root). The file is segmented through the host runner's segmenter (SegmenterDependency) and the resulting SyntaxPieces are prepended into layers[0] via PrependSource(IEnumerable); the rest of the pipeline picks them up through ordinary walkNode.Next traversal as if they had always been part of the host file. Pipeline placement: first child of the Fanuc Evaluation BundleSyntax. By the time this runs, M98Syntax / M198Syntax (each a ParameterizedFlagSyntax) have written a Parsing.M98 / Parsing.M198 sub-object carrying the captured P / L parameters. Note: those sub-objects are this syntax's only trigger — \"M98\" / \"M198\" never reach Parsing.Flags, because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. Filename lookup uses a fallback chain: O{P:D4}.NC, O{P}.NC, O{P:D4}, O{P}, {P:D4}.NC, {P}.NC — first match wins. Case-insensitive match is delegated to the host filesystem (Windows is, Linux is not). L > 1 inlines the same subprogram L times in series. Each repetition is a fresh segmentation pass so each block gets its own SyntaxPiece with an independent JSON object — the downstream pipeline mutates JSON in place and would clobber sibling repetitions if instances were shared. Not yet supported: M99 P{seq} early return inside a subprogram and partial-program calls (M98 P{seq}{prog} split encoding). Custom Macro B argument-binding calls (G65 / G66 / G67) live in FanucMacroCallSyntax and FanucModalMacroSyntax — those handle the argument-letter-to-#1..#26 binding and the macro-call frame isolation that M98 deliberately does not provide. SubProgramReturnSyntax Consumes Fanuc-style M99 subprogram-return blocks and pops one CallStack frame. Plain M99 relies on the natural pipeline tail — the inlined body's last block is followed in layers[0] by the caller's next block, so the “return” happens implicitly; this syntax only consumes the M99 trigger (so UnconsumedCheckSyntax doesn't warn), stamps a SubProgramReturn diagnostic section, and writes the popped CallStack for downstream blocks to carry. M99 P{seq} additionally redirects control flow to the caller's N{seq} block via ReplaceSource(IEnumerable). The caller's file is resolved from the popped frame's CallerFilePath; the scan uses the same SegmentAndSkipUntilLabel(ISegmenter, string, string, int, int, int, List, NcDiagnosticProgress) helper as FanucGotoSyntax, with hardcoded Fanuc-default probes (QuoteCommentSyntax + HeadIndexSyntax with symbol \"N\") because the M99 P semantic itself is Fanuc-family-only and Mazak / Syntec follow the same conventions. The iteration is counted against FanucGotoIterationDependency, sharing the same runaway-loop guard as GOTO — keyed on the same (FileName, TargetN) bucket so a tight M98 → M99 P → M98 … loop trips the same threshold. Pipeline placement: same Evaluation bundle slot it always occupied, right after SubProgramCallSyntax at the head. Needs FanucGotoIterationDependency, ProjectFolderDependency, SegmenterDependency, SyntaxPieceLayerDependency, FileIndexCounterDependency on the dep list when M99 P{seq} is to fire; without them the plain-M99 path still works and the P-jump emits a configuration warning. Detection is on the Parsing.M99 sub-object written by M99Syntax (a ParameterizedFlagSyntax) — the keyword \"M99\" never reaches Parsing.Flags because the parameterized match has already consumed the text by the time NumberedFlagSyntax runs. VariableEvaluatorSyntax Pure expression normalizer for Custom Macro B syntax. Walks the parser-stage residue on a single block and inlines numeric values wherever a Fanuc-style variable reference or bracket expression appears — but does not write to any specific store. Routing “where the resolved literal lands” stays in the brand-specific reader syntaxes (VolatileVariableReadingSyntax, RetainedCommonVariableTable's reader, FanucSystemControlVariableSyntax, …) which run after this syntax on the same block. Two passes per block: Assignments normalize — Parsing.Assignments.#nnn entries whose RHS is non-literal (e.g. \"#500+1\", \"SQRT[#100]\") are evaluated via the VariableEvaluatorSyntax.ChainLookup and the RHS string is replaced with the resolved literal (round-trip-safe \"R\"-format). The entry stays in Parsing.Assignments so downstream reader syntaxes consume it as a pure-literal assignment. Iteration follows source order (Parsing.Assignments insertion order). Parsing tree substitution — every string-typed value reachable from Parsing. (axis tags, canned-cycle sub-objects) is parsed; on a successful evaluation the string is replaced with a numeric JsonValue. Failures silently leave the original string and rely on downstream GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) at consumer sites to surface VariableExpression--Unevaluated only if the tag is actually read. Lookup chain (first non-null wins, configured per brand preset via RuntimeVariableLookups + IVariableLookup instances on NcDependencyList): Current block's own resolved assignments — built-in to VariableEvaluatorSyntax.ChainLookup; covers same-block forward references in source order (an earlier #nnn=literal is visible to a later RHS that mentions #nnn). Each IRuntimeVariableLookup in RuntimeVariableLookups, in list order. Typical contents for a Fanuc-family preset: LocalVariableLookup (#1-#33), VolatileVariableLookup (#100-#499), FanucPositionVariableLookup (#5001-#5043). Each IVariableLookup on the runner's NcDependencyList, in registration order (RetainedCommonVariableTable, FanucParameterTable, FanucToolOffsetVariableLookup). Each lookup self-gates its id range; the evaluator stays brand- and range-agnostic. Adding a new variable surface is additive: register an IVariableLookup on a dependency or push an IRuntimeVariableLookup onto the per-preset list. Same-block forward reference — when an Assignment RHS references a #nnn that is also being assigned later in the same block (i.e. listed in Parsing.Assignments after the RHS being evaluated), the VariableEvaluatorSyntax.ChainLookup cannot pick up the not-yet-resolved value and falls back to traceback / dependency-table reads — effectively the pre-block value. A VariableEvaluator--SameBlockForwardReference warning is emitted per such RHS so the user is told the source-order semantics were not honoured. Practical impact is near-zero for typical CAM-emitted NC (one assignment per line). VolatileVariableReadingSyntax Obtains values for Fanuc-style non-retained common variables (#100-#499). Reads literal numeric assignments from Parsing.Assignments.#nnn, dict-merges them with the previous block's volatile state, and writes the resulting per-block dictionary into Vars.Volatile. Lifetime is bounded by MachiningSession: within one session the dictionary carries forward block-by-block via this syntax; session restart abandons the SyntaxPiece JSON dataflow and starts fresh. Program-end (M02/M30) clearing is handled by ProgramEndCleanSyntax. Only literal numeric RHS values are consumed by this syntax (#124 = 15. ✓; #100 = #1 + 5 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them and writes the result into the same per-block dictionary. The two syntaxes are decoupled — the evaluator's lookup tracebacks via SyntaxPiece linkage so it does not depend on having run before or after this syntax. Structs MacroFileResolver.ResolvedFile Tri-form resolution result. FileName is the bare matched name; RelPath is that name joined with the folder portion of the dependency (relative when the folder is configured relative, absolute fallback when it isn't); AbsPath is the fully-resolved I/O target." }, "api/Hi.NcParsers.IGetSentence.html": { "href": "api/Hi.NcParsers.IGetSentence.html", "title": "Interface IGetSentence | HiAPI-C# 2025", "summary": "Interface IGetSentence Namespace Hi.NcParsers Assembly HiMech.dll Abstraction for a source that carries a Sentence. public interface IGetSentence Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Methods GetSentence() Returns the source Sentence carried by this object. Sentence GetSentence() Returns Sentence" }, + "api/Hi.NcParsers.ISentenceCarrier.html": { + "href": "api/Hi.NcParsers.ISentenceCarrier.html", + "title": "Interface ISentenceCarrier | HiAPI-C# 2025", + "summary": "Interface ISentenceCarrier Namespace Hi.NcParsers Assembly HiMech.dll Carries a reference to a source Sentence together with its execution-order SentenceIndex. Used as the cross-process alignment carrier for diagnostics, messages, ClStripPos, MachiningStep, etc. — both the source content (via GetSentence()) and the execution-order position (via SentenceIndex) are available without needing two separate references. public interface ISentenceCarrier : IGetSentence, ISentenceIndexed Inherited Members IGetSentence.GetSentence() ISentenceIndexed.SentenceIndex Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" + }, + "api/Hi.NcParsers.ISentenceIndexed.html": { + "href": "api/Hi.NcParsers.ISentenceIndexed.html", + "title": "Interface ISentenceIndexed | HiAPI-C# 2025", + "summary": "Interface ISentenceIndexed Namespace Hi.NcParsers Assembly HiMech.dll Abstraction for an object that carries a SentenceIndex — a 0-based ordinal of its source Sentence in NC execution order. Use as a cross-process alignment key (messages, ClStripPos, MachiningStep, etc.) when source order (MixedIndex(IFileLineIndex)) is not enough because SubProgram inline reorders blocks relative to (FileIndex, LineIndex). public interface ISentenceIndexed Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties SentenceIndex 0-based ordinal in pipeline execution order. int SentenceIndex { get; } Property Value int" + }, + "api/Hi.NcParsers.IndexedSentence.html": { + "href": "api/Hi.NcParsers.IndexedSentence.html", + "title": "Class IndexedSentence | HiAPI-C# 2025", + "summary": "Class IndexedSentence Namespace Hi.NcParsers Assembly HiMech.dll Minimal ISentenceCarrier pairing a Sentence with its execution-order SentenceIndex. Use when there is no richer host object that already carries the sentence — e.g. CSV-driven runs that go straight from an input line to a Sentence without a SyntaxPiece wrapper. public record IndexedSentence : ISentenceCarrier, IGetSentence, ISentenceIndexed, IEquatable Inheritance object IndexedSentence Implements ISentenceCarrier IGetSentence ISentenceIndexed IEquatable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IndexedSentence(Sentence, int) Minimal ISentenceCarrier pairing a Sentence with its execution-order SentenceIndex. Use when there is no richer host object that already carries the sentence — e.g. CSV-driven runs that go straight from an input line to a Sentence without a SyntaxPiece wrapper. public IndexedSentence(Sentence Sentence, int SentenceIndex) Parameters Sentence Sentence The source sentence carried. SentenceIndex int 0-based ordinal in pipeline execution order. Properties Sentence The source sentence carried. public Sentence Sentence { get; init; } Property Value Sentence SentenceIndex 0-based ordinal in pipeline execution order. public int SentenceIndex { get; init; } Property Value int Methods GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence" + }, "api/Hi.NcParsers.Initializers.HomeMcInitializer.html": { "href": "api/Hi.NcParsers.Initializers.HomeMcInitializer.html", "title": "Class HomeMcInitializer | HiAPI-C# 2025", @@ -3887,22 +3972,22 @@ "api/Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html": { "href": "api/Hi.NcParsers.InspectionSyntaxs.CleanupSyntax.html", "title": "Class CleanupSyntax | HiAPI-C# 2025", - "summary": "Class CleanupSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Removes indicated JSON keys from JsonObject after upstream syntaxes have consumed them. Useful for cleaning up runtime-derived intermediate data (e.g., ProgramToMcTransform) that should not persist in the final output. Place at the end of the syntax list, after all consumers have read the keys. public class CleanupSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CleanupSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples new CleanupSyntax(\"ProgramToMcTransform\", \"ToolOrientation\") Constructors CleanupSyntax(params string[]) Creates a CleanupSyntax seeded with the given keys. public CleanupSyntax(params string[] keys) Parameters keys string[] JSON keys to remove on each block; copied into Keys. CleanupSyntax(XElement) Reconstructs a CleanupSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public CleanupSyntax(XElement src) Parameters src XElement XML element with one Key child per entry in Keys. Properties Keys JSON keys to remove from JsonObject each block. public List Keys { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CleanupSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Removes indicated JSON keys from JsonObject after upstream syntaxes have consumed them. Useful for cleaning up runtime-derived intermediate data (e.g., ProgramToMcTransform) that should not persist in the final output. Place at the end of the syntax list, after all consumers have read the keys. public class CleanupSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CleanupSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples new CleanupSyntax(\"ProgramToMcTransform\", \"ToolOrientation\") Constructors CleanupSyntax(params string[]) Creates a CleanupSyntax seeded with the given keys. public CleanupSyntax(params string[] keys) Parameters keys string[] JSON keys to remove on each block; copied into Keys. CleanupSyntax(XElement) Reconstructs a CleanupSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public CleanupSyntax(XElement src) Parameters src XElement XML element with one Key child per entry in Keys. Properties Keys JSON keys to remove from JsonObject each block. public List Keys { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html": { "href": "api/Hi.NcParsers.InspectionSyntaxs.ProgramXyzBackfillSyntax.html", "title": "Class ProgramXyzBackfillSyntax | HiAPI-C# 2025", - "summary": "Class ProgramXyzBackfillSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Debug / observability back-fill: writes ProgramXyz onto blocks that did not have it written by upstream logic syntaxes (e.g. HomeMcInitializer block, chain-change blocks that only updated MC via a rotary-only path), only when the effective program position has changed from the last block that stored a ProgramXyz. Skips the block entirely when either of these holds: The block already has ProgramXyz written — e.g. by ProgramXyzSyntax, G53p1RotaryPositionSyntax, MachineCoordSelectSyntax, ReferenceReturnSyntax, McAbcXyzFallbackSyntax, or RadiusCompensationSyntax. The effective value equals the last stored value (modal-only block such as pure F / S / M / plane-select — no program motion). Only back-fills the root block; ItemsKey items are intentionally skipped (they are managed by Hi.NcParsers.LogicSyntaxs.CompoundMotionSyntaxUtil and per-cycle syntaxes that already write the right per-item ProgramXyz). Placement: end of NcSyntaxList, after UnconsumedCheckSyntax. Runs purely as a bookkeeping pass — no other syntax / semantic in the default pipeline reads the additional back-fill values it emits, so the runtime output (IAct stream) is unchanged whether this syntax is present or not. The only observable effect is additional ProgramXyz entries in the cached syntax-pieces dump, which makes block-to-block debugging and diffing easier. public class ProgramXyzBackfillSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramXyzBackfillSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProgramXyzBackfillSyntax() Creates a default ProgramXyzBackfillSyntax. public ProgramXyzBackfillSyntax() Fields AddedByValue Value written under AddedByKey on the ProgramXyz JSON object when this syntax synthesized the value. Absent on sub-objects authored by LogicSyntaxs-stage writers (e.g. ProgramXyzSyntax, G53p1RotaryPositionSyntax, MachineCoordSelectSyntax) — the AddedByKey is only present when a post-Logic / Inspection stage writer (this syntax, or ModalCarrySyntax) injected the sub-object. Purely informational — no downstream syntax / semantic reads this marker. Intended for cache-file diffing: its presence means \"this block did not originally command program motion; the value is a modal back-fill to make debug dumps more complete\". public const string AddedByValue = \"Backfill\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ProgramXyzBackfillSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Debug / observability back-fill: writes ProgramXyz onto blocks that did not have it written by upstream logic syntaxes (e.g. HomeMcInitializer block, chain-change blocks that only updated MC via a rotary-only path), only when the effective program position has changed from the last block that stored a ProgramXyz. Skips the block entirely when either of these holds: The block already has ProgramXyz written — e.g. by ProgramXyzSyntax, G53p1RotaryPositionSyntax, MachineCoordSelectSyntax, ReferenceReturnSyntax, McAbcXyzFallbackSyntax, or RadiusCompensationSyntax. The effective value equals the last stored value (modal-only block such as pure F / S / M / plane-select — no program motion). Only back-fills the root block; ItemsKey items are intentionally skipped (they are managed by Hi.NcParsers.LogicSyntaxs.CompoundMotionSyntaxUtil and per-cycle syntaxes that already write the right per-item ProgramXyz). Placement: end of NcSyntaxList, after UnconsumedCheckSyntax. Runs purely as a bookkeeping pass — no other syntax / semantic in the default pipeline reads the additional back-fill values it emits, so the runtime output (IAct stream) is unchanged whether this syntax is present or not. The only observable effect is additional ProgramXyz entries in the cached syntax-pieces dump, which makes block-to-block debugging and diffing easier. public class ProgramXyzBackfillSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramXyzBackfillSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProgramXyzBackfillSyntax() Creates a default ProgramXyzBackfillSyntax. public ProgramXyzBackfillSyntax() Fields AddedByValue Value written under AddedByKey on the ProgramXyz JSON object when this syntax synthesized the value. Absent on sub-objects authored by LogicSyntaxs-stage writers (e.g. ProgramXyzSyntax, G53p1RotaryPositionSyntax, MachineCoordSelectSyntax) — the AddedByKey is only present when a post-Logic / Inspection stage writer (this syntax, or ModalCarrySyntax) injected the sub-object. Purely informational — no downstream syntax / semantic reads this marker. Intended for cache-file diffing: its presence means \"this block did not originally command program motion; the value is a modal back-fill to make debug dumps more complete\". public const string AddedByValue = \"Backfill\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html": { "href": "api/Hi.NcParsers.InspectionSyntaxs.SnapshotSyntax.html", "title": "Class SnapshotSyntax | HiAPI-C# 2025", - "summary": "Class SnapshotSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Debug-time JsonObject capture: deep-clones every key on the current JsonObject (except the SnapshotKey envelope itself) into json[SnapshotKey][SectionName], leaving the rest of the block untouched. Insertable at any position in NcSyntaxList — placement determines what stage the dump captures (e.g. drop after the Parsing bundle for \"after-parsing\", drop after the Logic bundle for \"after-logic\"). Two instances with different SectionName values can coexist on the same pipeline and their dumps end up under sibling keys of the same SnapshotKey envelope, so a single cache file shows the data at every captured stage in one place. Excluding the SnapshotKey envelope from the clone keeps each captured section flat: it reflects \"everything else on the block at that stage\", and re-running through additional SnapshotSyntax instances never nests past one level. Set IsEnabled = false to keep the configuration in place but skip the capture (no JSON mutation, no allocation) — convenient for toggling a debug pipeline without removing the entries. public class SnapshotSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SnapshotSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SnapshotSyntax() Creates a SnapshotSyntax with no SectionName set yet. public SnapshotSyntax() SnapshotSyntax(string) Creates a SnapshotSyntax with the given SectionName. public SnapshotSyntax(string sectionName) Parameters sectionName string Sub-key under SnapshotKey for this instance's capture. SnapshotSyntax(XElement) Reconstructs a SnapshotSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public SnapshotSyntax(XElement src) Parameters src XElement XML element carrying SectionName and IsEnabled; null is treated as defaults. Fields SnapshotKey Top-level JSON envelope key under which captured sections are stored. Each SnapshotSyntax instance writes a sibling key (named by SectionName) inside this envelope. public const string SnapshotKey = \"Snapshot\" Field Value string Properties IsEnabled When false, Build(LazyLinkedListNode, List, NcDiagnosticProgress) is a no-op — keeps the entry in the syntax list for easy toggling without re-editing the project. public bool IsEnabled { get; set; } Property Value bool Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string SectionName Sub-key inside the SnapshotKey envelope under which this instance writes its capture. Two instances configured with the same SectionName are last-writer-wins on a given block. Required: Build(LazyLinkedListNode, List, NcDiagnosticProgress) throws InvalidOperationException when this is null or empty (a misconfiguration the user should see, not a silent skip). public string SectionName { get; set; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class SnapshotSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Debug-time JsonObject capture: deep-clones every key on the current JsonObject (except the SnapshotKey envelope itself) into json[SnapshotKey][SectionName], leaving the rest of the block untouched. Insertable at any position in NcSyntaxList — placement determines what stage the dump captures (e.g. drop after the Parsing bundle for \"after-parsing\", drop after the Logic bundle for \"after-logic\"). Two instances with different SectionName values can coexist on the same pipeline and their dumps end up under sibling keys of the same SnapshotKey envelope, so a single cache file shows the data at every captured stage in one place. Excluding the SnapshotKey envelope from the clone keeps each captured section flat: it reflects \"everything else on the block at that stage\", and re-running through additional SnapshotSyntax instances never nests past one level. Set IsEnabled = false to keep the configuration in place but skip the capture (no JSON mutation, no allocation) — convenient for toggling a debug pipeline without removing the entries. public class SnapshotSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SnapshotSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SnapshotSyntax() Creates a SnapshotSyntax with no SectionName set yet. public SnapshotSyntax() SnapshotSyntax(string) Creates a SnapshotSyntax with the given SectionName. public SnapshotSyntax(string sectionName) Parameters sectionName string Sub-key under SnapshotKey for this instance's capture. SnapshotSyntax(XElement) Reconstructs a SnapshotSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public SnapshotSyntax(XElement src) Parameters src XElement XML element carrying SectionName and IsEnabled; null is treated as defaults. Fields SnapshotKey Top-level JSON envelope key under which captured sections are stored. Each SnapshotSyntax instance writes a sibling key (named by SectionName) inside this envelope. public const string SnapshotKey = \"Snapshot\" Field Value string Properties IsEnabled When false, Build(LazyLinkedListNode, List, NcDiagnosticProgress) is a no-op — keeps the entry in the syntax list for easy toggling without re-editing the project. public bool IsEnabled { get; set; } Property Value bool Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string SectionName Sub-key inside the SnapshotKey envelope under which this instance writes its capture. Two instances configured with the same SectionName are last-writer-wins on a given block. Required: Build(LazyLinkedListNode, List, NcDiagnosticProgress) throws InvalidOperationException when this is null or empty (a misconfiguration the user should see, not a silent skip). public string SectionName { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html": { "href": "api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html", "title": "Class UnconsumedCheckSyntax | HiAPI-C# 2025", - "summary": "Class UnconsumedCheckSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Emits diagnostic warnings for content remaining after all upstream syntaxes have run: unconsumed Parsing entries and non-empty UnparsedText. Flags listed in ExcludedFlags are silently ignored. Must be placed at the end of NcSyntaxList. public class UnconsumedCheckSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object UnconsumedCheckSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors UnconsumedCheckSyntax() Creates a checker with an empty ExcludedFlags set. public UnconsumedCheckSyntax() UnconsumedCheckSyntax(XElement) Loads excluded flag names from child elements. public UnconsumedCheckSyntax(XElement src) Parameters src XElement Root element named XName. Properties ExcludedFlags Parsing flags/keys that are known but intentionally unhandled. public HashSet ExcludedFlags { get; set; } Property Value HashSet Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class UnconsumedCheckSyntax Namespace Hi.NcParsers.InspectionSyntaxs Assembly HiMech.dll Emits diagnostic warnings for content remaining after all upstream syntaxes have run: unconsumed Parsing entries and non-empty UnparsedText. Flags listed in ExcludedFlags are silently ignored. Must be placed at the end of NcSyntaxList. public class UnconsumedCheckSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object UnconsumedCheckSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors UnconsumedCheckSyntax() Creates a checker with an empty ExcludedFlags set. public UnconsumedCheckSyntax() UnconsumedCheckSyntax(XElement) Loads excluded flag names from child elements. public UnconsumedCheckSyntax(XElement src) Parameters src XElement Root element named XName. Properties ExcludedFlags Parsing flags/keys that are known but intentionally unhandled. public HashSet ExcludedFlags { get; set; } Property Value HashSet Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.InspectionSyntaxs.html": { "href": "api/Hi.NcParsers.InspectionSyntaxs.html", @@ -3914,6 +3999,16 @@ "title": "Class BlockSkip | HiAPI-C# 2025", "summary": "Class BlockSkip Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Optional block skip marker extracted from the head of an NC block. ISO 6983 / Fanuc calls this feature Block Delete (BDT switch); Siemens / Syntec / Mazak use the same / prefix with matching behaviour. The section is only present on blocks that carry a / prefix. Whether the block's NC commands are actually skipped at runtime depends on IBlockSkipConfig: Config absent or the Layer bit OFF → the / prefix is consumed, Body is left null, and the rest of the line parses as a regular NC block (comments still take effect). Config present and the Layer bit ON → the rest of the line is moved into Body and cleared from UnparsedText, so downstream parsing syntaxes see nothing and no NC action is emitted. Comment syntaxes run before this one so comments (and any embedded CsScript) still take effect. Not a comment: a comment is static metadata, block skip is a runtime toggle that can change per machine/operator setting. public class BlockSkip Inheritance object BlockSkip Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Body NC commands from the block that were moved out of UnparsedText because the skip took effect (after comment and CsScript extraction, with surrounding whitespace trimmed). Represents the semantic payload of the skipped block — not a verbatim snapshot; recover human-readable NC text with a dedicated formatter if needed. null when the skip did not take effect (no IBlockSkipConfig or its layer bit was OFF); in that case the block's commands are still in UnparsedText and parse normally. public string Body { get; set; } Property Value string Layer Skip layer (1..9). A bare / without a digit is layer 1 (most controllers treat / and /1 as the same switch). /2../9 map to layers 2..9. public int Layer { get; set; } Property Value int Symbol Delimiter symbol as it appeared in the NC block (always \"/\"). public string Symbol { get; set; } Property Value string" }, + "api/Hi.NcParsers.Keywords.CallFrame.html": { + "href": "api/Hi.NcParsers.Keywords.CallFrame.html", + "title": "Class CallFrame | HiAPI-C# 2025", + "summary": "Class CallFrame Namespace Hi.NcParsers.Keywords Assembly HiMech.dll One entry in Frames. Holds the caller-side information consumers need to “unwind” or “look back” — currently only the relative file path of the caller, used by SubProgramReturnSyntax on M99 P{seq} to locate the caller's N{seq} block. public class CallFrame Inheritance object CallFrame Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CallerFilePath Project-relative file path of the calling block — same form as FilePath on the caller side. Used by M99 P{seq} to re-segment the caller file and skip ahead to N{seq}. public string CallerFilePath { get; set; } Property Value string" + }, + "api/Hi.NcParsers.Keywords.CallStack.html": { + "href": "api/Hi.NcParsers.Keywords.CallStack.html", + "title": "Class CallStack | HiAPI-C# 2025", + "summary": "Class CallStack Namespace Hi.NcParsers.Keywords Assembly HiMech.dll JSON-section data shape representing the active call-frame stack on a block — pushed by call-and-inline syntaxes (SubProgramCallSyntax for M98/M198, FanucMacroCallSyntax for G65, and FanucModalMacroSyntax's expansion phase for G66 implicit triggers) and popped by SubProgramReturnSyntax on M99. Every block between push and pop carries the section forward via ModalCarrySyntax; the caller's blocks before push and after pop carry the surrounding stack state (typically empty when running from the main file). The section is wrapped in a JsonObject rather than exposed as a bare JsonArray so it fits ModalCarry's \"deep-clone JsonObject\" carry pattern — the array of frames lives inside Frames. public class CallStack Inheritance object CallStack Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Frames Ordered list of active call frames, bottom-of-stack first. Each entry is a CallFrame-shaped JSON object. Length 0 means the block is in the main (top-level) frame. public JsonArray Frames { get; set; } Property Value JsonArray" + }, "api/Hi.NcParsers.Keywords.CannedCycle.html": { "href": "api/Hi.NcParsers.Keywords.CannedCycle.html", "title": "Class CannedCycle | HiAPI-C# 2025", @@ -3959,6 +4054,26 @@ "title": "Namespace Hi.NcParsers.Keywords.Fanuc | HiAPI-C# 2025", "summary": "Namespace Hi.NcParsers.Keywords.Fanuc Classes FanucKeywords Fanuc-specific G-code and M-code constants. For ISO standard codes shared across brands, see IsoKeywords." }, + "api/Hi.NcParsers.Keywords.FanucGoto.html": { + "href": "api/Hi.NcParsers.Keywords.FanucGoto.html", + "title": "Class FanucGoto | HiAPI-C# 2025", + "summary": "Class FanucGoto Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Fanuc Custom Macro B GOTO record. Stamped on the host block by FanucGotoSyntax after the control-flow decision has been made; produced earlier by FanucGotoParsingSyntax as a parsing-stage sub-section (Parsing.FanucGoto) carrying the raw captured fields. Two source forms map to the same shape: GOTO — unconditional jump. Condition is null. IF [] GOTO — conditional jump. Condition holds the expression text from inside the brackets. At parsing time N is a raw token from the source — it may be a literal (\"100\"), a variable reference (\"#1\"), or a bracketed expression (\"#[#2+5]\"). VariableEvaluatorSyntax substitutes a resolved literal back into the same field in the Evaluation bundle; FanucGotoSyntax then int.TryParses the final string to produce an int target. public class FanucGoto Inheritance object FanucGoto Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Condition Raw boolean expression text from inside the IF [...] brackets, or null for the unconditional form. Evaluator boolean support is pending — until then, FanucGotoSyntax emits a warning and falls through for any non-null Condition. public string Condition { get; set; } Property Value string Fired Whether the GOTO actually redirected control flow on this block. False on conditional GOTOs whose condition evaluated to false, on conditional GOTOs whose condition was not evaluable, and on iteration-limit-exceeded blocks. The host block is preserved in either case so diagnostic readers can still see the call. public bool Fired { get; set; } Property Value bool N Target sequence-number expression — kept as a string so the in-place evaluator can substitute \"#1\" → “3” before the Evaluation stage parses it as an int. public string N { get; set; } Property Value string Term Triggering phrase: “GOTO” for the unconditional form, “IF...GOTO” for the conditional form. public string Term { get; set; } Property Value string" + }, + "api/Hi.NcParsers.Keywords.FanucIfThen.html": { + "href": "api/Hi.NcParsers.Keywords.FanucIfThen.html", + "title": "Class FanucIfThen | HiAPI-C# 2025", + "summary": "Class FanucIfThen Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Fanuc Custom Macro B IF [] THEN single-block conditional record. Stamped on the host block by FanucIfThenSyntax after the gate decision; produced earlier by FanucIfThenParsingSyntax as a parsing-stage sub-section (Parsing.FanucIfThen) carrying the raw captured fields plus an internal PendingAssignments sub-object harvested from the body text. Spec: IF [bool-expr] THEN executes only when the condition is truthy. Unlike FanucGoto's conditional form there is no jump — the body affects the current block only, no source splice, no label scan, no iteration watchdog. The most common body shape is a single Custom Macro B assignment (#nnn = ); multiple assignments in one body are also accepted and lifted together. Condition is held as a string at parsing time so VariableEvaluatorSyntax's pass-2 tree walk can substitute it to a numeric JsonValue in place; the FanucIfThenSyntax tail then reads the resolved node polymorphically via the same ReadCondition shape used by FanucGotoSyntax. public class FanucIfThen Inheritance object FanucIfThen Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Applied Whether the body actually fired on this block. False on conditions that evaluated to zero, on conditions the evaluator could not resolve, and on bodies that did not parse as one or more assignments (a G-code-only body for example, currently unsupported and warned). The host block is preserved in either case so diagnostic readers can still see the IF-THEN call site. public bool Applied { get; set; } Property Value bool BodyText Raw body text after the THEN keyword, retained verbatim for diagnostics and round-trip visibility. The structured sub-section actually lifted on a truthy condition lives at Parsing.FanucIfThen.PendingAssignments, populated by the parsing syntax via NcSyntaxUtil's GrabTagAssignment. public string BodyText { get; set; } Property Value string Condition Raw boolean expression text from inside the IF [...] brackets. String at parsing time; VariableEvaluatorSyntax's pass-2 tree walk substitutes a numeric literal in place when the expression evaluates successfully. FanucIfThenSyntax reads the resulting JSON node polymorphically (number → truthy gate; remaining string → unevaluated warning). public string Condition { get; set; } Property Value string" + }, + "api/Hi.NcParsers.Keywords.FanucMacroCall.html": { + "href": "api/Hi.NcParsers.Keywords.FanucMacroCall.html", + "title": "Class FanucMacroCall | HiAPI-C# 2025", + "summary": "Class FanucMacroCall Namespace Hi.NcParsers.Keywords Assembly HiMech.dll One-shot custom-macro-call record written by FanucMacroCallSyntax. Lives on both the G65 host block (the caller) and every inlined block of the macro body — so a cache-dump reader can land on any block inside the macro and immediately see “this block belongs to a G65 call of File with these argument bindings” without back-walking to find the host. Each inlined block additionally carries the resolved Vars.Local #1-#26 bindings derived from Args (see FanucMacroArgumentMap), so LocalVariableLookup resolves macro args in a single-block lookup. Frame isolation is structural: caller blocks never have Vars.Local written, so after the macro body ends, the next caller block reads null for any #1-#26 without any explicit frame marker. public class FanucMacroCall Inheritance object FanucMacroCall Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Args Argument-letter → numeric-value map captured from the call line (e.g., G65 P9100 A1.5 B2. ⇒ { “A”: 1.5, “B”: 2.0 }). The matching Vars.Local bindings on each inlined block are derived from this via the Type-I argument-letter map (FanucMacroArgumentMap). public JsonObject Args { get; set; } Property Value JsonObject FileName Bare matched file name (e.g. “O9100.NC”). The resolver tries several fallback patterns (FilenamePatterns); this records which one hit. JSON-portable across environments — the folder context lives on the host's SubProgramFolderConfig dependency, not encoded here. public string FileName { get; set; } Property Value string L Repeat count from the L parameter; defaults to 1 when absent. public int L { get; set; } Property Value int P Macro program number from the P parameter (e.g., 9100 for O9100). public int P { get; set; } Property Value int Term Triggering keyword (always “G65”). public string Term { get; set; } Property Value string" + }, + "api/Hi.NcParsers.Keywords.FanucModalMacro.html": { + "href": "api/Hi.NcParsers.Keywords.FanucModalMacro.html", + "title": "Class FanucModalMacro | HiAPI-C# 2025", + "summary": "Class FanucModalMacro Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Modal-macro-call record left by FanucModalMacroSyntax. Carries Fanuc G66 setup state forward block-to-block until cancelled by G67. The section is also written on the G67 block itself (with Term = “G67”) so cache dumps show the cancel edge; subsequent blocks then carry no section at all. Per-block expansion of the modal call into an actual macro inline at every positioning move is not yet implemented — a FanucModalMacro--NotExpanded warning is emitted on the setup block to flag the simulation gap. The setup state itself is captured faithfully so external tooling can detect \"this block sits inside a G66 modal\" via the carried section. public class FanucModalMacro Inheritance object FanucModalMacro Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Args Argument-letter → numeric-value map captured from the G66 setup line. Null on a G67 cancel block. public JsonObject Args { get; set; } Property Value JsonObject FileName Bare matched file name (e.g. “O9000.NC”) that would supply the modal-call macro body. Null on a G67 cancel block or when the file could not be resolved at the setup site. Same JSON-portable form as FileName — the folder context lives on the host's SubProgramFolderConfig dependency, not encoded here. public string FileName { get; set; } Property Value string L Repeat count from the L parameter; defaults to 1 when absent. Null on a G67 cancel block. public int? L { get; set; } Property Value int? P Macro program number from the P parameter on the G66 setup. Null on a G67 cancel block. public int? P { get; set; } Property Value int? Term Triggering keyword: “G66” for setup / modal-active blocks, “G67” for the cancel block. Carried blocks downstream of a G66 setup mirror the setup section verbatim. public string Term { get; set; } Property Value string" + }, "api/Hi.NcParsers.Keywords.FanucPathSmoothing.html": { "href": "api/Hi.NcParsers.Keywords.FanucPathSmoothing.html", "title": "Class FanucPathSmoothing | HiAPI-C# 2025", @@ -4047,7 +4162,7 @@ "api/Hi.NcParsers.Keywords.IMotionEventDef.html": { "href": "api/Hi.NcParsers.Keywords.IMotionEventDef.html", "title": "Interface IMotionEventDef | HiAPI-C# 2025", - "summary": "Interface IMotionEventDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll One-shot motion event — present only on blocks that actually issue a motion command. Used by motion semantics (McLinearMotionSemantic, McArcMotionSemantic, ClLinearMotionSemantic) as the trigger to emit motion IAct. NOT carried forward across blocks. Property names are used as JSON keys via nameof. public interface IMotionEventDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": false } Properties Form Interpolation form. See MotionForm. string Form { get; set; } Property Value string IsRapid True for rapid traverse; false (default) for programmed feedrate. bool IsRapid { get; set; } Property Value bool" + "summary": "Interface IMotionEventDef Namespace Hi.NcParsers.Keywords Assembly HiMech.dll One-shot motion event — present on every block whose source programmed a motion command, regardless of whether the resulting displacement is non-zero. A redundant G01 X10 on a block already at X10 still gets a MotionEvent; the motion semantics (McLinearMotionSemantic, McArcMotionSemantic, ClLinearMotionSemantic) then early-return on distance <= 0 and emit no IAct. NOT carried forward across blocks. Reason for the \"programmed, not displaced\" definition: Fanuc G66 modal macro fires once per programmed motion command (per Fanuc spec — no distance gate), so FanucModalMacroSyntax.Expansion uses MotionEvent presence as its trigger. Suppressing the section on zero-distance moves would silently change G66 behaviour. The modal sibling MotionState separately latches the Group-01 mode for readers that only need to know \"what G-code is active\". Property names are used as JSON keys via nameof. public interface IMotionEventDef Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": false } Properties Form Interpolation form. See MotionForm. string Form { get; set; } Property Value string IsRapid True for rapid traverse; false (default) for programmed feedrate. bool IsRapid { get; set; } Property Value bool" }, "api/Hi.NcParsers.Keywords.IMotionStateDef.html": { "href": "api/Hi.NcParsers.Keywords.IMotionStateDef.html", @@ -4149,6 +4264,11 @@ "title": "Class MachineCoordinateState | HiAPI-C# 2025", "summary": "Class MachineCoordinateState Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Section key holder for IMachineCoordinateStateDef. public class MachineCoordinateState Inheritance object MachineCoordinateState Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object)" }, + "api/Hi.NcParsers.Keywords.MacroFrame.html": { + "href": "api/Hi.NcParsers.Keywords.MacroFrame.html", + "title": "Class MacroFrame | HiAPI-C# 2025", + "summary": "Class MacroFrame Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Top-level integer marker stamped onto a SyntaxPiece's JSON to identify which call frame the block belongs to. Brand-agnostic by design — written by FanucMacroCallSyntax today, reusable by any future call-inlining syntax (Fanuc G66 modal expansion, Heidenhain LBL CALL, …) that needs local-variable isolation across call boundaries. Semantics: the value is an opaque id; only equality matters. Two blocks with the same MacroFrame id share a call frame (locals visible across them via single-step carry); two blocks with different ids do not. The id 0 is reserved for the main program frame and is returned by Get(JsonObject) when the field is absent — so a plain caller block needs no stamp and yet compares distinct from any inlined frame. Stored as a top-level JSON int (not an object section) so it stays lightweight on every inlined block. Decoupled from FanucMacroCall: that section is a diagnostic record of the call (what file, what args), while MacroFrame is the purely functional marker the local-variable I/O syntaxes consult. public static class MacroFrame Inheritance object MacroFrame Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods Get(JsonObject) Reads the frame id off a block, returning 0 (main frame) when the field is absent or non-integer. public static int Get(JsonObject json) Parameters json JsonObject Returns int Set(JsonObject, int) Stamps the frame id onto a block. Overwrites any previous value. Callers writing the main-frame default (0) should simply leave the field absent rather than calling this with 0. public static void Set(JsonObject json, int frameId) Parameters json JsonObject frameId int" + }, "api/Hi.NcParsers.Keywords.MotionEvent.html": { "href": "api/Hi.NcParsers.Keywords.MotionEvent.html", "title": "Class MotionEvent | HiAPI-C# 2025", @@ -4217,12 +4337,12 @@ "api/Hi.NcParsers.Keywords.SubProgramCall.html": { "href": "api/Hi.NcParsers.Keywords.SubProgramCall.html", "title": "Class SubProgramCall | HiAPI-C# 2025", - "summary": "Class SubProgramCall Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Subprogram call record left on the M98 / M198 host block by SubProgramCallSyntax after the subprogram file has been inlined into the source layer. The call itself emits no motion act; this section is bookkeeping so cache dumps and diagnostic readers can see \"this block triggered an inline of file File\". public class SubProgramCall Inheritance object SubProgramCall Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties File Resolved file path that supplied the inlined blocks. Useful for diagnostics when a fallback filename pattern matched. public string File { get; set; } Property Value string L Repeat count from the L parameter; defaults to 1 when absent. public int L { get; set; } Property Value int P Subprogram number from the P parameter (e.g., 1234 for O1234). public int P { get; set; } Property Value int Term Triggering keyword: “M98” (internal) or “M198” (external storage). public string Term { get; set; } Property Value string" + "summary": "Class SubProgramCall Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Subprogram call record left by SubProgramCallSyntax on the M98 / M198 host block and on every inlined body block. The call itself emits no motion act; this section is bookkeeping so cache dumps and diagnostic readers can see \"this block triggered (or sits inside) an inline of program P\". M98 and M198 share the exact same section shape. The difference between them is purely environmental — which folder the resolver looks in (SubProgramFolderConfig.InternalFolder vs ExternalFolder) — and that lives on the dependency, not in this JSON record. public class SubProgramCall Inheritance object SubProgramCall Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FileName Bare matched file name (e.g. “O1234.NC”). The resolver tries several fallback patterns (FilenamePatterns); this records which one hit. JSON-portable across environments — the folder context (internal vs external storage) is captured by the host's SubProgramFolderConfig dependency, not encoded here. public string FileName { get; set; } Property Value string L Repeat count from the L parameter; defaults to 1 when absent. public int L { get; set; } Property Value int P Subprogram number from the P parameter (e.g., 1234 for O1234). public int P { get; set; } Property Value int Term Triggering keyword: “M98” (internal) or “M198” (external storage). public string Term { get; set; } Property Value string" }, "api/Hi.NcParsers.Keywords.SubProgramReturn.html": { "href": "api/Hi.NcParsers.Keywords.SubProgramReturn.html", "title": "Class SubProgramReturn | HiAPI-C# 2025", - "summary": "Class SubProgramReturn Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Subprogram return record left on the M99 host block by SubProgramReturnSyntax. Return blocks produce no motion acts; this section makes the consumed M99 visible in cache dumps and reserves a slot for future M99 P{seq} (return-to-sequence-number) support. public class SubProgramReturn Inheritance object SubProgramReturn Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties P Optional caller sequence number from the P parameter (M99 P{seq}). Null on a plain M99. Currently recorded but not yet honoured — the subprogram's tail continues straight into the caller's next block, regardless of P. public int? P { get; set; } Property Value int? Term Triggering keyword (always “M99” for now). public string Term { get; set; } Property Value string" + "summary": "Class SubProgramReturn Namespace Hi.NcParsers.Keywords Assembly HiMech.dll Subprogram return record left on the M99 host block by SubProgramReturnSyntax. Return blocks produce no motion acts; this section makes the consumed M99 visible in cache dumps and surfaces the M99 P{seq} jump decision. public class SubProgramReturn Inheritance object SubProgramReturn Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties JumpedToN Set to P when the M99 actually redirected control flow to the caller's N{seq} block via LazyLinkedList.ReplaceSource. Null on plain M99 (no P), and on M99 P{seq} that fell through because the jump could not be carried out. public int? JumpedToN { get; set; } Property Value int? P Optional caller sequence number from the P parameter (M99 P{seq}). Null on a plain M99. When non-null and the jump fires, JumpedToN is set to the same value; when the jump is suppressed (no caller frame, label not found, iteration limit reached) JumpedToN stays null and a warning is emitted. public int? P { get; set; } Property Value int? Term Triggering keyword (always “M99” for now). public string Term { get; set; } Property Value string" }, "api/Hi.NcParsers.Keywords.TapeBoundary.html": { "href": "api/Hi.NcParsers.Keywords.TapeBoundary.html", @@ -4252,13 +4372,18 @@ "api/Hi.NcParsers.Keywords.html": { "href": "api/Hi.NcParsers.Keywords.html", "title": "Namespace Hi.NcParsers.Keywords | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Keywords Classes BlockSkip Optional block skip marker extracted from the head of an NC block. ISO 6983 / Fanuc calls this feature Block Delete (BDT switch); Siemens / Syntec / Mazak use the same / prefix with matching behaviour. The section is only present on blocks that carry a / prefix. Whether the block's NC commands are actually skipped at runtime depends on IBlockSkipConfig: Config absent or the Layer bit OFF → the / prefix is consumed, Body is left null, and the rest of the line parses as a regular NC block (comments still take effect). Config present and the Layer bit ON → the rest of the line is moved into Body and cleared from UnparsedText, so downstream parsing syntaxes see nothing and no NC action is emitted. Comment syntaxes run before this one so comments (and any embedded CsScript) still take effect. Not a comment: a comment is static metadata, block skip is a runtime toggle that can change per machine/operator setting. CannedCycle Section key holder + concrete implementation for ICannedCycleDef. Comment Comment extracted from an NC block. Symbol identifies the comment style; Text holds the content without the symbol. Downstream syntaxes (e.g., CsScript) may further trim Text after extracting embedded markers. CompoundMotion Section key holder + concrete implementation for ICompoundMotionDef. Coolant Section key holder + concrete implementation for ICoolantDef. CoordinateOffset Work coordinate offset state written by IsoCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G54, G55, G56, G57, G58, G59, G59.1–G59.9. Siemens: G54–G57 + G505–G599 (extended), G500 to cancel. Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift). CsScript Section-key holder for inline C# scripts attached to an NC block. Carries BeginScript (run before the block's acts) and EndScript (run after). Resolved by CsScriptBeginSemantic and CsScriptEndSemantic. Dwell Section key holder + concrete implementation for IDwellDef. FanucPathSmoothing Section data holder for IFanucPathSmoothingDef. FanucProgramNumber Fanuc-family program identifier header that follows a TapeBoundary line — e.g. O1234 or . Wrapper records the surface form so a parsed block can be emitted back to the original notation. Feedrate Section key holder + concrete implementation for IFeedrateDef. IndexNote JSON-section data shape pairing a single-character address symbol (e.g. ‘O’, ‘N’) with its numeric index, used to annotate program/sequence numbers on an NC block. IsoLocalCoordinateOffset ISO/Fanuc-family local coordinate offset state (G52) written by IsoLocalCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. G52 X Y Z installs a local coordinate-system shift that stacks on top of the active G54-G59 work offset. The cancel mechanism is to write G52 X0 Y0 Z0 (or hit M30 / reset) — there is no separate G code for \"cancel\". The offset vector is therefore always modal: zero is a valid modal value, not a \"disabled\" state, so the section is recorded on every block. Brand-specific kin: Siemens TRANS/ATRANS (which can also carry rotation/scale/mirror) and Heidenhain TRANS DATUM are handled by their own syntaxes and write to their own sections — they do not share this key, because their data shapes are richer. MachineCoordinateState Section key holder for IMachineCoordinateStateDef. MotionEvent Section key holder + concrete implementation for IMotionEventDef. MotionState Section key holder + concrete implementation for IMotionStateDef. PathSmoothing Section key holder for IPathSmoothingDef. PlaneSelect Section key holder for IPlaneSelectDef. Positioning Section key holder + concrete implementation for IPositioningDef. ProgramEnd Section key holder for IProgramEndDef. ProgramStop Section key holder + concrete implementation for IProgramStopDef. RadiusCompensation Section key holder + concrete implementation for IRadiusCompensationDef. SpindleControl Section key holder + concrete implementation for ISpindleControlDef. SpindleOrientation Section key holder + concrete implementation for ISpindleOrientationDef. SpindleSpeed Section key holder + concrete implementation for ISpindleSpeedDef. SubProgramCall Subprogram call record left on the M98 / M198 host block by SubProgramCallSyntax after the subprogram file has been inlined into the source layer. The call itself emits no motion act; this section is bookkeeping so cache dumps and diagnostic readers can see \"this block triggered an inline of file File\". SubProgramReturn Subprogram return record left on the M99 host block by SubProgramReturnSyntax. Return blocks produce no motion acts; this section makes the consumed M99 visible in cache dumps and reserves a slot for future M99 P{seq} (return-to-sequence-number) support. TapeBoundary Tape leader / trailer line — the literal % that historically marked the start and end of a punched paper-tape program. ISO-style controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a file-level boundary marker. Distinct from a comment: the controller uses it as a tape/file delimiter, not as embedded operator text. TiltTransform Concrete class for ITiltTransformDef section serialization. ToolHeightCompensation Section key holder for IToolHeightCompensationDef. Unit Section key holder + concrete implementation for IUnitDef. Vars JSON section schema for per-block variable storage. Each sub-property names a sub-section that holds a { “#nnn”: value } dictionary keyed by Fanuc-style variable id. The sub-sections partition the variable space by lifetime: Local — #1-#33, scope: macro call frame (pushed/popped by G65 / G66 / M99). Volatile — #100-#499, non-retained common; carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. SystemControl — #3000-#3999, controller-side system variables; offline-only round-trip record (real controller effects such as clock reset / alarm trigger / message pause are not simulated). The property types are JsonObject rather than strongly-typed dictionaries because each sub-section's keys are dynamic Fanuc variable ids (#100, #5001, …) discovered at parse time, not a fixed schema. This class exists solely to give the section name and sub-keys stable nameof() targets — instances are never constructed at runtime. Interfaces IArcMotionDef Arc motion data written by CircularMotionSyntax. Stored under the Hi.Motion JSON section alongside IMotionEventDef properties. ICannedCycleDef Canned cycle modal state (Group 09). Captures which cycle is currently active, its return mode (G98/G99), and the resolved absolute parameter set used for modal lookback. Written by CannedCycleResolveSyntax on every block that belongs to the canned-cycle group: cycle code present (G81/G82/G83/G73/G84/G74/G85/G86/G89/G76/G87), modal repeat (cycle still active, only coordinates given), or explicit cancel (G80). Term = \"G80\" is the explicit-cancel sentinel used by FindPreviousActiveCycle(LazyLinkedListNode, string[]) to terminate modal lookback without ambiguity; regular blocks (e.g. G00 X.. Y..) simply omit the section entirely. ICompoundMotionDef Compound motion section definition for commands that produce multiple sub-operations (G28, G53.1, G81, G82, etc.). Contains a ItemsKey array resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil. Item types (discriminated by key presence): Hi.Motion — rapid/feed linear motion (IMotionEventDef + IMachineCoordinateStateDef) Dwell — pause (Time in seconds) SpindleControl — spindle direction change (Direction) SpindleOrientation — oriented spindle stop (OSS) (Angle_deg) ICoolantDef Coolant state (M07 mist / M08 flood / M09 off). Written by CoolantSyntax. Modal — persists until changed. IsOn is the on/off convenience flag (true for M07 and M08, false for M09). Mode carries the abstract kind (Flood / Mist / Off) for consumers that need to distinguish flood vs mist. IDwellDef Dwell/pause section definition for use inside Sequence items. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActDelay. IFanucPathSmoothingDef Fanuc-specific path smoothing state written by FanucPathSmoothingSyntax. Extends IPathSmoothingDef with the Fanuc G05.1 R argument (precision / smoothness level number, R1..R10 mapping to controller-internal tuning macro variables). Q is binary in current Fanuc firmware (Q0 disable / Q1 enable), so IsEnabled covers it directly — no raw Q field is stored. JSON section key remains nameof(PathSmoothing) so generic readers (cache dumps, modal carry, UI) can cast to IPathSmoothingDef across all controller brands; brand-specific readers cast to IFanucPathSmoothingDef for the extra fields. IFeedrateDef Feedrate state written by FeedrateSyntax. Property names are used as JSON keys via nameof. ISO standard: F command + G94 (per minute) / G95 (per revolution). Supported by all major CNC brands. IFlagsDef JSON section schema describing the modal/non-modal flags that take effect on an NC block. Each entry in Flags is a brand-specific keyword recognized by the soft-NC runtime. IMachineCoordinateStateDef Modal machine-coordinate state — absolute six-axis machine position after the block has executed. Written on every block by motion-related LogicSyntaxs (McAbcSyntax, McAbcXyzFallbackSyntax, McXyzSyntax, MachineCoordSelectSyntax, G53p1RotaryPositionSyntax, ReferenceReturnSyntax); seeded on the init block by HomeMcInitializer; carried across non-motion blocks by ModalCarrySyntax. Only configured axes appear as keys (X/Y/Z/A/B/C). Non-existent axes (e.g., A/B/C on a 3-axis machine) are omitted rather than written as NaN sentinels. IMotionEventDef One-shot motion event — present only on blocks that actually issue a motion command. Used by motion semantics (McLinearMotionSemantic, McArcMotionSemantic, ClLinearMotionSemantic) as the trigger to emit motion IAct. NOT carried forward across blocks. Property names are used as JSON keys via nameof. IMotionStateDef Modal motion state — Group 01 G-code mode (G00 / G01 / G02 / G03 ...). Written on every block by LinearMotionSyntax / CircularMotionSyntax; carried across non-motion blocks by ModalCarrySyntax. Property names are used as JSON keys via nameof. Unlike sibling modal sections (Unit, PlaneSelect, Positioning) which carry both a brand-specific Term and a brand-neutral conventional field, MotionState intentionally keeps only Term: the brand-neutral semantic (\"what kind of motion happened\") lives on the sibling one-shot MotionEvent (Form = McLinear / McArc / ClLinear / ClArc). State here is purely the modal latch of the last Group-01 G-code so downstream FindPrevious* can resume motion-mode bookkeeping. IParsingDef JSON section schema carrying the raw, brand-specific parsing trace for an NC block. The Parsing node holds intermediate parser output used by downstream syntaxes and diagnostics. IPathSmoothingDef Path smoothing state. The base interface is brand-agnostic; controller brands extend it with their own argument fields (e.g. IFanucPathSmoothingDef for Fanuc G05.1 R precision-level). Fanuc-flavour writes are produced by FanucPathSmoothingSyntax. ISO/Fanuc G05.1 Q1 (enable) / G05.1 Q0 (disable): high-precision contour control / AICC / Nano Smoothing. Controller-internal interpolation black box — simulation records the state but does not alter the tool path. IPlaneSelectDef Active plane selection state written by PlaneSelectSyntax. Property names are used as JSON keys via nameof. ISO: G17/G18/G19. Heidenhain: implicit from L/CC syntax. Term carries the brand-specific G-code; Plane stores the conventional, brand-neutral axis-pair name (XY/ZX/YZ). IPositioningDef Modal positioning state — ISO Group 03 (G90 absolute / G91 incremental). Written by PositioningSyntax, consumed by IncrementalResolveSyntax, canned cycle syntaxes, and MachineCoordSelectSyntax. Property names are used as JSON keys via nameof. Term is the brand-specific G-code (Fanuc/ISO G90/G91); Mode is the conventional, brand-neutral name (Absolute / Incremental). IProgramEndDef Program end marker (M02/M30). Written by ProgramEndSyntax. Other syntaxes (e.g. IsoLocalCoordinateOffsetSyntax) read this section to reset modal state instead of detecting M30 directly. IProgramStopDef Program-stop marker (M00 unconditional / M01 optional). Written by ProgramStopSyntax on each block that carries an M00/M01 flag. Non-modal: the section appears only on the exact block where the stop code is present. Distinct from IProgramEndDef (M02/M30, end of program). M00 halts execution unconditionally; the operator must press Cycle Start to resume. M01 is an optional stop gated by the operator's \"Optional Stop\" panel switch — ignored when the switch is off. This parsing-layer section records the NC intent; runtime / semantic layers decide whether to actually pause. IProgramXyzDef JSON section schema carrying the program-coordinate position commanded on the current block. Written by ProgramXyzSyntax before the ProgramToMcTransform chain composes it into machine coordinates. IRadiusCompensationDef Radius compensation state written by RadiusCompensationSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G41 (left), G42 (right), G40 (cancel). Heidenhain Klartext maps RL → G41, RR → G42, R0 → G40. When active, the tool path is offset perpendicular to the programmed path by Radius_mm; Side determines left vs right. The root ProgramXyz retains the user-programmed position; MachineCoordinate is overwritten to reflect the compensated path. ISpindleControlDef Spindle control item for use inside ItemsKey arrays. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleDirection. ISpindleOrientationDef Oriented spindle stop item for use inside ItemsKey arrays. Commands the spindle to stop at a specific angular position (OSS). Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleOrientation. ISpindleSpeedDef Spindle speed and direction state written by SpindleSpeedSyntax. Property names are used as JSON keys via nameof. ISO: S command for speed, M03/M04/M05 for direction. Heidenhain: M3/M4/M5. Siemens: M3/M4/M5 or SPOS. Direction is stored as the conventional SpindleDirection enum name (CW/CCW/STOP), not as brand-specific M-codes. ITiltTransformDef Tilt transform state written by tilt transform syntaxes. Property names are used as JSON keys via nameof. Managed commands (ISO/Fanuc): G68 (2D rotation), G68.2 (tilted work plane), G69 (cancel). Siemens equivalent: CYCLE800, ROT/AROT (handled by separate syntax). Heidenhain equivalent: PLANE SPATIAL / PLANE RESET (handled by separate syntax). IToolHeightCompensationDef Tool height compensation state written by ToolHeightOffsetSyntax. Property names are used as JSON keys via nameof. The JSON section can be deserialized to an instance implementing this interface. Managed commands (ISO/Fanuc): G43, G44, G49. Fanuc extension: G43.4 (TCPM — parsed only in Fanuc syntax list). Siemens equivalent: TRAFOOF/TRAORI (handled by separate syntax). Heidenhain equivalent: TOOL CALL / M128/M129 (handled by separate syntax). ITransformationDef Chain of named ProgramXyz → MachineCoordinate transformation entries. Stored as a JsonArray of entries, each with “Source”, “Kind”, and “Mat4d” keys. Each contributing INcSyntax adds or replaces its own entry by source name. GetComposedTransform(JsonObject) composes entries in order: McXyz = ProgramXyz * T[0] * T[1] * ... * T[n]. Kind contour-validity classification. Each entry is either: \"Static\" — the Mat4d is valid for any point along the contour. Tilt, coord-offset, and the kinematic pivot in non-RTCP / rotary-stable blocks are all Static. \"Dynamic\" — the Mat4d is a block-endpoint snapshot of a rotary-state-dependent transform (RTCP rotary-dynamic). Composition still yields a correct endpoint MC, but the matrix is not contour-valid: intermediate CL-point positions cannot be derived by applying it to an interpolated ProgramXyz. The semantic layer (ClLinearMotionSemantic) handles per-step IK separately. Use HasDynamicEntry(JsonObject) to detect the presence of any Dynamic entry on this block. IUnitDef Unit-system state (ISO Group 06: G20 inch / G21 metric). Written by UnitModeSyntax. Modal. HiNC's NC pipeline works exclusively in millimetres. G21 is therefore a no-op confirmation of the default; G20 is reported as an Unsupported Error and callers are expected to pre-convert the NC program to metric before loading. IUnparsedTextDef JSON section schema carrying the residual block text that was not consumed by any registered syntax. Used for diagnostics and round-trip preservation." + "summary": "Namespace Hi.NcParsers.Keywords Classes BlockSkip Optional block skip marker extracted from the head of an NC block. ISO 6983 / Fanuc calls this feature Block Delete (BDT switch); Siemens / Syntec / Mazak use the same / prefix with matching behaviour. The section is only present on blocks that carry a / prefix. Whether the block's NC commands are actually skipped at runtime depends on IBlockSkipConfig: Config absent or the Layer bit OFF → the / prefix is consumed, Body is left null, and the rest of the line parses as a regular NC block (comments still take effect). Config present and the Layer bit ON → the rest of the line is moved into Body and cleared from UnparsedText, so downstream parsing syntaxes see nothing and no NC action is emitted. Comment syntaxes run before this one so comments (and any embedded CsScript) still take effect. Not a comment: a comment is static metadata, block skip is a runtime toggle that can change per machine/operator setting. CallFrame One entry in Frames. Holds the caller-side information consumers need to “unwind” or “look back” — currently only the relative file path of the caller, used by SubProgramReturnSyntax on M99 P{seq} to locate the caller's N{seq} block. CallStack JSON-section data shape representing the active call-frame stack on a block — pushed by call-and-inline syntaxes (SubProgramCallSyntax for M98/M198, FanucMacroCallSyntax for G65, and FanucModalMacroSyntax's expansion phase for G66 implicit triggers) and popped by SubProgramReturnSyntax on M99. Every block between push and pop carries the section forward via ModalCarrySyntax; the caller's blocks before push and after pop carry the surrounding stack state (typically empty when running from the main file). The section is wrapped in a JsonObject rather than exposed as a bare JsonArray so it fits ModalCarry's \"deep-clone JsonObject\" carry pattern — the array of frames lives inside Frames. CannedCycle Section key holder + concrete implementation for ICannedCycleDef. Comment Comment extracted from an NC block. Symbol identifies the comment style; Text holds the content without the symbol. Downstream syntaxes (e.g., CsScript) may further trim Text after extracting embedded markers. CompoundMotion Section key holder + concrete implementation for ICompoundMotionDef. Coolant Section key holder + concrete implementation for ICoolantDef. CoordinateOffset Work coordinate offset state written by IsoCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G54, G55, G56, G57, G58, G59, G59.1–G59.9. Siemens: G54–G57 + G505–G599 (extended), G500 to cancel. Heidenhain: CYCL DEF 247 (Datum Preset) / CYCL DEF 7 (Datum Shift). CsScript Section-key holder for inline C# scripts attached to an NC block. Carries BeginScript (run before the block's acts) and EndScript (run after). Resolved by CsScriptBeginSemantic and CsScriptEndSemantic. Dwell Section key holder + concrete implementation for IDwellDef. FanucGoto Fanuc Custom Macro B GOTO record. Stamped on the host block by FanucGotoSyntax after the control-flow decision has been made; produced earlier by FanucGotoParsingSyntax as a parsing-stage sub-section (Parsing.FanucGoto) carrying the raw captured fields. Two source forms map to the same shape: GOTO — unconditional jump. Condition is null. IF [] GOTO — conditional jump. Condition holds the expression text from inside the brackets. At parsing time N is a raw token from the source — it may be a literal (\"100\"), a variable reference (\"#1\"), or a bracketed expression (\"#[#2+5]\"). VariableEvaluatorSyntax substitutes a resolved literal back into the same field in the Evaluation bundle; FanucGotoSyntax then int.TryParses the final string to produce an int target. FanucIfThen Fanuc Custom Macro B IF [] THEN single-block conditional record. Stamped on the host block by FanucIfThenSyntax after the gate decision; produced earlier by FanucIfThenParsingSyntax as a parsing-stage sub-section (Parsing.FanucIfThen) carrying the raw captured fields plus an internal PendingAssignments sub-object harvested from the body text. Spec: IF [bool-expr] THEN executes only when the condition is truthy. Unlike FanucGoto's conditional form there is no jump — the body affects the current block only, no source splice, no label scan, no iteration watchdog. The most common body shape is a single Custom Macro B assignment (#nnn = ); multiple assignments in one body are also accepted and lifted together. Condition is held as a string at parsing time so VariableEvaluatorSyntax's pass-2 tree walk can substitute it to a numeric JsonValue in place; the FanucIfThenSyntax tail then reads the resolved node polymorphically via the same ReadCondition shape used by FanucGotoSyntax. FanucMacroCall One-shot custom-macro-call record written by FanucMacroCallSyntax. Lives on both the G65 host block (the caller) and every inlined block of the macro body — so a cache-dump reader can land on any block inside the macro and immediately see “this block belongs to a G65 call of File with these argument bindings” without back-walking to find the host. Each inlined block additionally carries the resolved Vars.Local #1-#26 bindings derived from Args (see FanucMacroArgumentMap), so LocalVariableLookup resolves macro args in a single-block lookup. Frame isolation is structural: caller blocks never have Vars.Local written, so after the macro body ends, the next caller block reads null for any #1-#26 without any explicit frame marker. FanucModalMacro Modal-macro-call record left by FanucModalMacroSyntax. Carries Fanuc G66 setup state forward block-to-block until cancelled by G67. The section is also written on the G67 block itself (with Term = “G67”) so cache dumps show the cancel edge; subsequent blocks then carry no section at all. Per-block expansion of the modal call into an actual macro inline at every positioning move is not yet implemented — a FanucModalMacro--NotExpanded warning is emitted on the setup block to flag the simulation gap. The setup state itself is captured faithfully so external tooling can detect \"this block sits inside a G66 modal\" via the carried section. FanucPathSmoothing Section data holder for IFanucPathSmoothingDef. FanucProgramNumber Fanuc-family program identifier header that follows a TapeBoundary line — e.g. O1234 or . Wrapper records the surface form so a parsed block can be emitted back to the original notation. Feedrate Section key holder + concrete implementation for IFeedrateDef. IndexNote JSON-section data shape pairing a single-character address symbol (e.g. ‘O’, ‘N’) with its numeric index, used to annotate program/sequence numbers on an NC block. IsoLocalCoordinateOffset ISO/Fanuc-family local coordinate offset state (G52) written by IsoLocalCoordinateOffsetSyntax. Property names are used as JSON keys via nameof. G52 X Y Z installs a local coordinate-system shift that stacks on top of the active G54-G59 work offset. The cancel mechanism is to write G52 X0 Y0 Z0 (or hit M30 / reset) — there is no separate G code for \"cancel\". The offset vector is therefore always modal: zero is a valid modal value, not a \"disabled\" state, so the section is recorded on every block. Brand-specific kin: Siemens TRANS/ATRANS (which can also carry rotation/scale/mirror) and Heidenhain TRANS DATUM are handled by their own syntaxes and write to their own sections — they do not share this key, because their data shapes are richer. MachineCoordinateState Section key holder for IMachineCoordinateStateDef. MacroFrame Top-level integer marker stamped onto a SyntaxPiece's JSON to identify which call frame the block belongs to. Brand-agnostic by design — written by FanucMacroCallSyntax today, reusable by any future call-inlining syntax (Fanuc G66 modal expansion, Heidenhain LBL CALL, …) that needs local-variable isolation across call boundaries. Semantics: the value is an opaque id; only equality matters. Two blocks with the same MacroFrame id share a call frame (locals visible across them via single-step carry); two blocks with different ids do not. The id 0 is reserved for the main program frame and is returned by Get(JsonObject) when the field is absent — so a plain caller block needs no stamp and yet compares distinct from any inlined frame. Stored as a top-level JSON int (not an object section) so it stays lightweight on every inlined block. Decoupled from FanucMacroCall: that section is a diagnostic record of the call (what file, what args), while MacroFrame is the purely functional marker the local-variable I/O syntaxes consult. MotionEvent Section key holder + concrete implementation for IMotionEventDef. MotionState Section key holder + concrete implementation for IMotionStateDef. PathSmoothing Section key holder for IPathSmoothingDef. PlaneSelect Section key holder for IPlaneSelectDef. Positioning Section key holder + concrete implementation for IPositioningDef. ProgramEnd Section key holder for IProgramEndDef. ProgramStop Section key holder + concrete implementation for IProgramStopDef. RadiusCompensation Section key holder + concrete implementation for IRadiusCompensationDef. SpindleControl Section key holder + concrete implementation for ISpindleControlDef. SpindleOrientation Section key holder + concrete implementation for ISpindleOrientationDef. SpindleSpeed Section key holder + concrete implementation for ISpindleSpeedDef. SubProgramCall Subprogram call record left by SubProgramCallSyntax on the M98 / M198 host block and on every inlined body block. The call itself emits no motion act; this section is bookkeeping so cache dumps and diagnostic readers can see \"this block triggered (or sits inside) an inline of program P\". M98 and M198 share the exact same section shape. The difference between them is purely environmental — which folder the resolver looks in (SubProgramFolderConfig.InternalFolder vs ExternalFolder) — and that lives on the dependency, not in this JSON record. SubProgramReturn Subprogram return record left on the M99 host block by SubProgramReturnSyntax. Return blocks produce no motion acts; this section makes the consumed M99 visible in cache dumps and surfaces the M99 P{seq} jump decision. TapeBoundary Tape leader / trailer line — the literal % that historically marked the start and end of a punched paper-tape program. ISO-style controllers (Fanuc, Mazak, Syntec, Siemens) all preserve it as a file-level boundary marker. Distinct from a comment: the controller uses it as a tape/file delimiter, not as embedded operator text. TiltTransform Concrete class for ITiltTransformDef section serialization. ToolHeightCompensation Section key holder for IToolHeightCompensationDef. Unit Section key holder + concrete implementation for IUnitDef. Vars JSON section schema for per-block variable storage. Each sub-property names a sub-section that holds a { “#nnn”: value } dictionary keyed by Fanuc-style variable id. The sub-sections partition the variable space by lifetime: Local — #1-#33, scope: macro call frame (pushed/popped by G65 / G66 / M99). Volatile — #100-#499, non-retained common; carries block-to-block, cleared by ProgramEndCleanSyntax on M02 / M30. SystemControl — #3000-#3999, controller-side system variables; offline-only round-trip record (real controller effects such as clock reset / alarm trigger / message pause are not simulated). The property types are JsonObject rather than strongly-typed dictionaries because each sub-section's keys are dynamic Fanuc variable ids (#100, #5001, …) discovered at parse time, not a fixed schema. This class exists solely to give the section name and sub-keys stable nameof() targets — instances are never constructed at runtime. Interfaces IArcMotionDef Arc motion data written by CircularMotionSyntax. Stored under the Hi.Motion JSON section alongside IMotionEventDef properties. ICannedCycleDef Canned cycle modal state (Group 09). Captures which cycle is currently active, its return mode (G98/G99), and the resolved absolute parameter set used for modal lookback. Written by CannedCycleResolveSyntax on every block that belongs to the canned-cycle group: cycle code present (G81/G82/G83/G73/G84/G74/G85/G86/G89/G76/G87), modal repeat (cycle still active, only coordinates given), or explicit cancel (G80). Term = \"G80\" is the explicit-cancel sentinel used by FindPreviousActiveCycle(LazyLinkedListNode, string[]) to terminate modal lookback without ambiguity; regular blocks (e.g. G00 X.. Y..) simply omit the section entirely. ICompoundMotionDef Compound motion section definition for commands that produce multiple sub-operations (G28, G53.1, G81, G82, etc.). Contains a ItemsKey array resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil. Item types (discriminated by key presence): Hi.Motion — rapid/feed linear motion (IMotionEventDef + IMachineCoordinateStateDef) Dwell — pause (Time in seconds) SpindleControl — spindle direction change (Direction) SpindleOrientation — oriented spindle stop (OSS) (Angle_deg) ICoolantDef Coolant state (M07 mist / M08 flood / M09 off). Written by CoolantSyntax. Modal — persists until changed. IsOn is the on/off convenience flag (true for M07 and M08, false for M09). Mode carries the abstract kind (Flood / Mist / Off) for consumers that need to distinguish flood vs mist. IDwellDef Dwell/pause section definition for use inside Sequence items. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActDelay. IFanucPathSmoothingDef Fanuc-specific path smoothing state written by FanucPathSmoothingSyntax. Extends IPathSmoothingDef with the Fanuc G05.1 R argument (precision / smoothness level number, R1..R10 mapping to controller-internal tuning macro variables). Q is binary in current Fanuc firmware (Q0 disable / Q1 enable), so IsEnabled covers it directly — no raw Q field is stored. JSON section key remains nameof(PathSmoothing) so generic readers (cache dumps, modal carry, UI) can cast to IPathSmoothingDef across all controller brands; brand-specific readers cast to IFanucPathSmoothingDef for the extra fields. IFeedrateDef Feedrate state written by FeedrateSyntax. Property names are used as JSON keys via nameof. ISO standard: F command + G94 (per minute) / G95 (per revolution). Supported by all major CNC brands. IFlagsDef JSON section schema describing the modal/non-modal flags that take effect on an NC block. Each entry in Flags is a brand-specific keyword recognized by the soft-NC runtime. IMachineCoordinateStateDef Modal machine-coordinate state — absolute six-axis machine position after the block has executed. Written on every block by motion-related LogicSyntaxs (McAbcSyntax, McAbcXyzFallbackSyntax, McXyzSyntax, MachineCoordSelectSyntax, G53p1RotaryPositionSyntax, ReferenceReturnSyntax); seeded on the init block by HomeMcInitializer; carried across non-motion blocks by ModalCarrySyntax. Only configured axes appear as keys (X/Y/Z/A/B/C). Non-existent axes (e.g., A/B/C on a 3-axis machine) are omitted rather than written as NaN sentinels. IMotionEventDef One-shot motion event — present on every block whose source programmed a motion command, regardless of whether the resulting displacement is non-zero. A redundant G01 X10 on a block already at X10 still gets a MotionEvent; the motion semantics (McLinearMotionSemantic, McArcMotionSemantic, ClLinearMotionSemantic) then early-return on distance <= 0 and emit no IAct. NOT carried forward across blocks. Reason for the \"programmed, not displaced\" definition: Fanuc G66 modal macro fires once per programmed motion command (per Fanuc spec — no distance gate), so FanucModalMacroSyntax.Expansion uses MotionEvent presence as its trigger. Suppressing the section on zero-distance moves would silently change G66 behaviour. The modal sibling MotionState separately latches the Group-01 mode for readers that only need to know \"what G-code is active\". Property names are used as JSON keys via nameof. IMotionStateDef Modal motion state — Group 01 G-code mode (G00 / G01 / G02 / G03 ...). Written on every block by LinearMotionSyntax / CircularMotionSyntax; carried across non-motion blocks by ModalCarrySyntax. Property names are used as JSON keys via nameof. Unlike sibling modal sections (Unit, PlaneSelect, Positioning) which carry both a brand-specific Term and a brand-neutral conventional field, MotionState intentionally keeps only Term: the brand-neutral semantic (\"what kind of motion happened\") lives on the sibling one-shot MotionEvent (Form = McLinear / McArc / ClLinear / ClArc). State here is purely the modal latch of the last Group-01 G-code so downstream FindPrevious* can resume motion-mode bookkeeping. IParsingDef JSON section schema carrying the raw, brand-specific parsing trace for an NC block. The Parsing node holds intermediate parser output used by downstream syntaxes and diagnostics. IPathSmoothingDef Path smoothing state. The base interface is brand-agnostic; controller brands extend it with their own argument fields (e.g. IFanucPathSmoothingDef for Fanuc G05.1 R precision-level). Fanuc-flavour writes are produced by FanucPathSmoothingSyntax. ISO/Fanuc G05.1 Q1 (enable) / G05.1 Q0 (disable): high-precision contour control / AICC / Nano Smoothing. Controller-internal interpolation black box — simulation records the state but does not alter the tool path. IPlaneSelectDef Active plane selection state written by PlaneSelectSyntax. Property names are used as JSON keys via nameof. ISO: G17/G18/G19. Heidenhain: implicit from L/CC syntax. Term carries the brand-specific G-code; Plane stores the conventional, brand-neutral axis-pair name (XY/ZX/YZ). IPositioningDef Modal positioning state — ISO Group 03 (G90 absolute / G91 incremental). Written by PositioningSyntax, consumed by IncrementalResolveSyntax, canned cycle syntaxes, and MachineCoordSelectSyntax. Property names are used as JSON keys via nameof. Term is the brand-specific G-code (Fanuc/ISO G90/G91); Mode is the conventional, brand-neutral name (Absolute / Incremental). IProgramEndDef Program end marker (M02/M30). Written by ProgramEndSyntax. Other syntaxes (e.g. IsoLocalCoordinateOffsetSyntax) read this section to reset modal state instead of detecting M30 directly. IProgramStopDef Program-stop marker (M00 unconditional / M01 optional). Written by ProgramStopSyntax on each block that carries an M00/M01 flag. Non-modal: the section appears only on the exact block where the stop code is present. Distinct from IProgramEndDef (M02/M30, end of program). M00 halts execution unconditionally; the operator must press Cycle Start to resume. M01 is an optional stop gated by the operator's \"Optional Stop\" panel switch — ignored when the switch is off. This parsing-layer section records the NC intent; runtime / semantic layers decide whether to actually pause. IProgramXyzDef JSON section schema carrying the program-coordinate position commanded on the current block. Written by ProgramXyzSyntax before the ProgramToMcTransform chain composes it into machine coordinates. IRadiusCompensationDef Radius compensation state written by RadiusCompensationSyntax. Property names are used as JSON keys via nameof. Managed commands (ISO): G41 (left), G42 (right), G40 (cancel). Heidenhain Klartext maps RL → G41, RR → G42, R0 → G40. When active, the tool path is offset perpendicular to the programmed path by Radius_mm; Side determines left vs right. The root ProgramXyz retains the user-programmed position; MachineCoordinate is overwritten to reflect the compensated path. ISpindleControlDef Spindle control item for use inside ItemsKey arrays. Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleDirection. ISpindleOrientationDef Oriented spindle stop item for use inside ItemsKey arrays. Commands the spindle to stop at a specific angular position (OSS). Resolved by Hi.NcParsers.Semantics.CompoundMotionSemanticUtil into ActSpindleOrientation. ISpindleSpeedDef Spindle speed and direction state written by SpindleSpeedSyntax. Property names are used as JSON keys via nameof. ISO: S command for speed, M03/M04/M05 for direction. Heidenhain: M3/M4/M5. Siemens: M3/M4/M5 or SPOS. Direction is stored as the conventional SpindleDirection enum name (CW/CCW/STOP), not as brand-specific M-codes. ITiltTransformDef Tilt transform state written by tilt transform syntaxes. Property names are used as JSON keys via nameof. Managed commands (ISO/Fanuc): G68 (2D rotation), G68.2 (tilted work plane), G69 (cancel). Siemens equivalent: CYCLE800, ROT/AROT (handled by separate syntax). Heidenhain equivalent: PLANE SPATIAL / PLANE RESET (handled by separate syntax). IToolHeightCompensationDef Tool height compensation state written by ToolHeightOffsetSyntax. Property names are used as JSON keys via nameof. The JSON section can be deserialized to an instance implementing this interface. Managed commands (ISO/Fanuc): G43, G44, G49. Fanuc extension: G43.4 (TCPM — parsed only in Fanuc syntax list). Siemens equivalent: TRAFOOF/TRAORI (handled by separate syntax). Heidenhain equivalent: TOOL CALL / M128/M129 (handled by separate syntax). ITransformationDef Chain of named ProgramXyz → MachineCoordinate transformation entries. Stored as a JsonArray of entries, each with “Source”, “Kind”, and “Mat4d” keys. Each contributing INcSyntax adds or replaces its own entry by source name. GetComposedTransform(JsonObject) composes entries in order: McXyz = ProgramXyz * T[0] * T[1] * ... * T[n]. Kind contour-validity classification. Each entry is either: \"Static\" — the Mat4d is valid for any point along the contour. Tilt, coord-offset, and the kinematic pivot in non-RTCP / rotary-stable blocks are all Static. \"Dynamic\" — the Mat4d is a block-endpoint snapshot of a rotary-state-dependent transform (RTCP rotary-dynamic). Composition still yields a correct endpoint MC, but the matrix is not contour-valid: intermediate CL-point positions cannot be derived by applying it to an interpolated ProgramXyz. The semantic layer (ClLinearMotionSemantic) handles per-step IK separately. Use HasDynamicEntry(JsonObject) to detect the presence of any Dynamic entry on this block. IUnitDef Unit-system state (ISO Group 06: G20 inch / G21 metric). Written by UnitModeSyntax. Modal. HiNC's NC pipeline works exclusively in millimetres. G21 is therefore a no-op confirmation of the default; G20 is reported as an Unsupported Error and callers are expected to pre-convert the NC program to metric before loading. IUnparsedTextDef JSON section schema carrying the residual block text that was not consumed by any registered syntax. Used for diagnostics and round-trip preservation." }, "api/Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.html", "title": "Class BackBoringSyntax | HiAPI-C# 2025", "summary": "Class BackBoringSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G87 back boring cycle. Supports modal repetition. Cuts upward from Z to R — used to bore the back side of a workpiece. Cycle sequence: Oriented spindle stop (OSS) at current position Rapid (shifted) to init position, then down to bottom Z — tool enters pre-drilled hole without contacting bore wall Shift back to hole center at bottom Spindle start (CW) Feed upward from Z to R-point (back boring cut) Oriented spindle stop at R Tool shift, rapid retract (shifted) to final Z Shift back to center, spindle restart Q specifies the lateral shift distance (mm). Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. public class BackBoringSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BackBoringSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BackBoringSyntax() Initializes a new instance with default settings. public BackBoringSyntax() BackBoringSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public BackBoringSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, + "api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html": { + "href": "api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html", + "title": "Enum BareG28Behavior | HiAPI-C# 2025", + "summary": "Enum BareG28Behavior Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes ICompoundMotionDef section for G28 reference point return. Reads intermediate XYZ from Parsing.G28 (written by G28Syntax) and converts to machine coordinates via ResolveProgramXyz(JsonNode, LazyLinkedListNode, ISentenceCarrier, NcDiagnosticProgress). Must be placed after LinearMotionSyntax in the syntax chain. Removes the IMotionEventDef section written by LinearMotionSyntax (G28 handles its own motion). Overwrites root MachineCoordinateState and ProgramXyz with reference position for subsequent block lookback. public enum BareG28Behavior Extension Methods InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MaskUtil.GetMaskedValue(T, T, bool) MaskUtil.SetMask(ref T, T, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields Alarm = 0 Emit Coord-RefReturn–003 validation error and consume the bare G28 without emitting motion. AllAxesHome = 1 Interpret bare G28 as if every configured axis were listed at its current modal value, so item 0 (intermediate) is a no-op and item 1 sends each configured axis to its home. Requires an IMachineAxisConfig dep; without one the syntax falls back to Alarm. Examples All cases hardcode a TestDeps.HomeMc with X/Y home at 0 and Z home at 100 (typical mill where Z-home is above the table) and leave the ProgramToMcTransform chain at identity so the final ProgramXyz equals MachineCoordinateState. The G28 pattern emits a 2-item CompoundMotion: item 0 is the intermediate point in ProgramXyz, item 1 is the final position in MachineCoordinateState. Axes not present in the G28 block keep the previous-block MC value rather than going home. G91 G28 X0 Y0 Z0 with a #Previous: block carrying MachineCoordinateState=(50,60,70) — all three axes go home, so the final MC is the configured home (0,0,100): #Previous: { \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 70 } } #BeforeBuild: { \"Parsing\": { \"G28\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } } } #AfterBuild: { \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"X\": 0, \"Y\": 0, \"Z\": 100 } } ] }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 100 } } G91 G28 Z0 — only Z goes to its home; X/Y inherit from the previous block's MC. Item 0's intermediate ProgramXyz takes X/Y from the inherited program XYZ (= previous MC under identity transform) and Z from the literal 0 in the G28 block: #Previous: { \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 70 } } #BeforeBuild: { \"Parsing\": { \"G28\": { \"Z\": 0 } } } #AfterBuild: { \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"ProgramXyz\": { \"X\": 50, \"Y\": 60, \"Z\": 0 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 100 } } ] }, \"ProgramXyz\": { \"X\": 50, \"Y\": 60, \"Z\": 100 } } No IHomeMcConfig dep on the dependency list — the syntax early-returns and the G28 sub-section stays in Parsing for an upstream consumer or downstream syntax to handle: #BeforeBuild: { \"Parsing\": { \"G28\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } } } #AfterBuild: { \"Parsing\": { \"G28\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } } } Rotary cases below add TestDeps.AxisConfig declaring B as rotary and extend HomeMc with the conventional B home at 0°. Each rotary block uses literal B = 45° so item 0's intermediate (45°), item 1's home (0°), and #Previous: modal B (30°) are pairwise distinct — a test that swaps any two values for any other is caught by the assertion. The wrap pass (McAbcCyclicPathSyntax) is a different syntax, so these per-SUT conformance assertions show only the raw literal / canonical-home values written by this syntax, before any cyclic normalization runs. G91 G28 B45. — pure rotary G28. Emits a 2-item CompoundMotion whose items carry only ABC keys in MC; no XYZ ProgramXyz and no XYZ MC because the block doesn't reference X/Y/Z (and the conformance harness doesn't run McXyzSyntax downstream — in the full pipeline that syntax fills root MachineCoordinateState's XYZ from root ProgramXyz, but with no XYZ in the block there's nothing to fill anyway). Root MC.B holds the canonical home for modal carry-forward; root ProgramXyz is not written: #BeforeBuild: { \"Parsing\": { \"G28\": { \"B\": 45 } } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 0 }, \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"B\": 45 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"B\": 0 } } ] } } G28 X0. B45. mixed XYZ + rotary. Both axis kinds occupy the same two items: item 0 carries the XYZ intermediate ProgramXyz alongside the rotary literal in MC; item 1 carries the final XYZ MC alongside the rotary home in MC. Root MachineCoordinateState here holds only the rotary modal value (B = 0, the home); the XYZ portion of root MC would be filled by the downstream McXyzSyntax in the full pipeline (out of scope for this per-SUT conformance). Root MachineCoordinateState appears first because the rotary-home write happens before CompoundMotion / ProgramXyz are inserted. #Previous: carries B = 30 so the prev rotary modal is distinct from both the literal (45) and the home (0): #Previous: { \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 70, \"B\": 30 } } #BeforeBuild: { \"Parsing\": { \"G28\": { \"X\": 0, \"B\": 45 } } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 0 }, \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"ProgramXyz\": { \"X\": 0, \"Y\": 60, \"Z\": 70 }, \"MachineCoordinateState\": { \"B\": 45 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"X\": 0, \"Y\": 60, \"Z\": 70, \"B\": 0 } } ] }, \"ProgramXyz\": { \"X\": 0, \"Y\": 60, \"Z\": 70 } } Bare G28 — no axis specifiers — exercises the configurable BareG28 policy. Default Alarm emits Coord-RefReturn--003 and consumes the G28 without motion (the diagnostic surfaces through the NcDiagnosticProgress sink, not the block JSON, so the canonical #AfterBuild is just an empty object): #BeforeBuild: { \"Parsing\": { \"G28\": {} } } #AfterBuild: {} Bare G28 with BareG28 set to AllAxesHome: the syntax synthesises a literal at the inherited program position for every configured linear axis and the previous modal angle for every configured rotary axis (here X/Y/Z taken from the #Previous: MC under the identity ProgramToMcTransform, B taken from the prev modal). Item 0's intermediate therefore equals current (no motion in stage 1) and item 1 sends each axis to its home: #Previous: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30, \"B\": 45 } } #BeforeBuild: { \"Parsing\": { \"G28\": {} } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 0 }, \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MachineCoordinateState\": { \"B\": 45 } }, { \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true }, \"MachineCoordinateState\": { \"X\": 0, \"Y\": 0, \"Z\": 100, \"B\": 0 } } ] }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 100 } }" + }, "api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html", "title": "Class BoringCycleSyntax | HiAPI-C# 2025", @@ -4272,12 +4397,12 @@ "api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html", "title": "Class CircularMotionSyntax | HiAPI-C# 2025", - "summary": "Class CircularMotionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes McArc motion for circular commands (ISO G02/G03). Detects motion mode from Flags, reads I/J/K center offsets or R radius from Parsing, computes arc center in program coordinates, and writes a one-shot MotionEvent (form + arc params) plus a modal MotionState (Term). G02/G03 mode is modal (Group 01) — persists across blocks via Term. Arc parameters (I/J/K/R) are per-block and must be present in every arc block. Must be placed before LinearMotionSyntax in the syntax chain. Both share the Group 01 motion slot; whichever writes a MotionEvent first claims it. public class CircularMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CircularMotionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CircularMotionSyntax() Initializes a new instance with default settings. public CircularMotionSyntax() CircularMotionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public CircularMotionSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CircularMotionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes McArc motion for circular commands (ISO G02/G03). Detects motion mode from Flags, reads I/J/K center offsets or R radius from Parsing, computes arc center in program coordinates, and writes a one-shot MotionEvent (form + arc params) plus a modal MotionState (Term). G02/G03 mode is modal (Group 01) — persists across blocks via Term. Arc parameters (I/J/K/R) are per-block and must be present in every arc block. Must be placed before LinearMotionSyntax in the syntax chain. Both share the Group 01 motion slot; whichever writes a MotionEvent first claims it. public class CircularMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CircularMotionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below have the current block's ProgramXyz already set (as a prior ProgramXyzSyntax would have produced) and run with no #Previous:, so GetLastProgramXyz returns Vec3d.Zero. The G17 XY plane is implicit (no PlaneSelect section means PlaneNormalDir = 2). G02 with I/J — quarter arc from (0,0,0) to (10,0,0) around (5,0,0); I=5 J=0 are incremental offsets from start to center. The G02 flag is consumed (Parsing removed once empty); MotionState + MotionEvent are written: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"I\": 5, \"J\": 0 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"PlaneNormalDir\": 2, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } } Modal carry of G02: no motion flag on the current block but a #Previous: MotionState.Term = \"G02\" tells us we are still in circular mode. I/J on the current block describe the arc the same way: #Previous: { \"MotionState\": { \"Term\": \"G02\" } } #BeforeBuild: { \"Parsing\": { \"I\": 5, \"J\": 0 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"PlaneNormalDir\": 2, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } } No I/J/K/R on the block — the per-block arc data is missing, so the syntax bails out early; the G02 flag stays in Parsing.Flags for some other syntax to act on (or to surface as residue if no one does): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"] }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G02\"] }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } R-format degenerate (chord = 2R, semicircle): start (0,0,0) → end (10,0,0), R=5. perpDistSq resolves to 0 so the computed center collapses to the chord midpoint (5,0,0); no sqrt drift on this branch: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"R\": 5 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"PlaneNormalDir\": 2, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } } R-format non-trivial: G02 90° arc from (0,0,0) to (10,10,0) with R=10. The center comes from the cross-product + sqrt + normalize path inside ResolveCenterFromR(Vec3d, Vec3d, int, bool, double), but for this particular axis-aligned chord the rounding errors cancel and the center lands at exactly (10, 0, 0) — i.e. no ULP drift here, in contrast to e.g. McAbcCyclicPathSyntax's rad/deg round-trip: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"R\": 10 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 10, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 10, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"PlaneNormalDir\": 2, \"IsCcw\": false, \"AdditionalCircleNum\": 0 } } G03 CCW with I/J — same geometry as case 0 (start (0,0,0), end (10,0,0), I=5 J=0 → center (5,0,0)) but the G03 flag flips IsCcw to true. Direction is the only differentiating output; arc-center math is unchanged: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G03\"], \"I\": 5, \"J\": 0 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G03\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"PlaneNormalDir\": 2, \"IsCcw\": true, \"AdditionalCircleNum\": 0 } } Full circle G02 — start == end (both (0,0,0)), I=5 J=0 places center off-start at (5,0,0). The isFullCircle guard (chord length < 1e-6 and center-to-start > 1e-6) flips AdditionalCircleNum to 1 so a downstream motion semantic knows to draw the closed loop: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G02\"], \"I\": 5, \"J\": 0 }, \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 0, \"Y\": 0, \"Z\": 0 }, \"MotionState\": { \"Term\": \"G02\" }, \"MotionEvent\": { \"Form\": \"McArc\", \"ArcCenter\": { \"X\": 5, \"Y\": 0, \"Z\": 0 }, \"PlaneNormalDir\": 2, \"IsCcw\": false, \"AdditionalCircleNum\": 1 } } Constructors CircularMotionSyntax() Initializes a new instance with default settings. public CircularMotionSyntax() CircularMotionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public CircularMotionSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html", "title": "Class CoolantSyntax | HiAPI-C# 2025", - "summary": "Class CoolantSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes M07 (mist ON), M08 (flood ON), and M09 (coolant OFF) from Flags and writes the ICoolantDef section with both IsOn (convenience flag) and Mode (abstract mode name: Flood / Mist / Off). Modal — persists via backward lookback. public class CoolantSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CoolantSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CoolantSyntax() Initializes a new instance with default settings. public CoolantSyntax() CoolantSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public CoolantSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CoolantSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes M07 (mist ON), M08 (flood ON), and M09 (coolant OFF) from Flags and writes the ICoolantDef section with both IsOn (convenience flag) and Mode (abstract mode name: Flood / Mist / Off). Modal — persists via backward lookback. public class CoolantSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CoolantSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M08\"] } } #AfterBuild: { \"Coolant\": { \"IsOn\": true, \"Mode\": \"Flood\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M09\", \"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Coolant\": { \"IsOn\": false, \"Mode\": \"Off\" } } #Previous: { \"Coolant\": { \"IsOn\": true, \"Mode\": \"Mist\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Coolant\": { \"IsOn\": true, \"Mode\": \"Mist\" } } Constructors CoolantSyntax() Initializes a new instance with default settings. public CoolantSyntax() CoolantSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public CoolantSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html", @@ -4292,12 +4417,12 @@ "api/Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html", "title": "Class FanucPathSmoothingSyntax | HiAPI-C# 2025", - "summary": "Class FanucPathSmoothingSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes Fanuc G05.1 (high-precision contour / AICC II / Nano Smoothing) and records the modal state in the PathSmoothing JSON section using the FanucPathSmoothing schema. Q1 enables, Q0 disables; the optional R{n} precision-level is preserved as Level. The simulation does not alter the tool path — this is a controller-internal interpolation black box; the captured state exists for bidirectional NC-text reconstruction. Modal carry to subsequent blocks is handled by ModalCarrySyntax, which already tracks the PathSmoothing section key and deep-clones it forward. public class FanucPathSmoothingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucPathSmoothingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucPathSmoothingSyntax() Initializes a new instance with default settings. public FanucPathSmoothingSyntax() FanucPathSmoothingSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public FanucPathSmoothingSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FanucPathSmoothingSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes Fanuc G05.1 (high-precision contour / AICC II / Nano Smoothing) and records the modal state in the PathSmoothing JSON section using the FanucPathSmoothing schema. Q1 enables, Q0 disables; the optional R{n} precision-level is preserved as Level. The simulation does not alter the tool path — this is a controller-internal interpolation black box; the captured state exists for bidirectional NC-text reconstruction. Modal carry to subsequent blocks is handled by ModalCarrySyntax, which already tracks the PathSmoothing section key and deep-clones it forward. public class FanucPathSmoothingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucPathSmoothingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples First block of the stream (no #Previous:) — stamps the default disabled section so downstream modal lookback always sees a concrete PathSmoothing: #BeforeBuild: { } #AfterBuild: { \"PathSmoothing\": { \"IsEnabled\": false, \"Term\": \"G05.1\" } } G05.1 Q1 with no R — enables, no Level emitted: #Previous: { \"PathSmoothing\": { \"IsEnabled\": false, \"Term\": \"G05.1\" } } #BeforeBuild: { \"Parsing\": { \"G05.1\": { \"Q\": 1 } } } #AfterBuild: { \"PathSmoothing\": { \"IsEnabled\": true, \"Term\": \"G05.1\" } } G05.1 Q1 R3 — enables and preserves the precision level: #Previous: { \"PathSmoothing\": { \"IsEnabled\": false, \"Term\": \"G05.1\" } } #BeforeBuild: { \"Parsing\": { \"G05.1\": { \"Q\": 1, \"R\": 3 } } } #AfterBuild: { \"PathSmoothing\": { \"IsEnabled\": true, \"Term\": \"G05.1\", \"Level\": 3 } } G05.1 Q0 — disables; any prior Level is dropped (R only meaningful when enabling): #Previous: { \"PathSmoothing\": { \"IsEnabled\": true, \"Term\": \"G05.1\", \"Level\": 3 } } #BeforeBuild: { \"Parsing\": { \"G05.1\": { \"Q\": 0 } } } #AfterBuild: { \"PathSmoothing\": { \"IsEnabled\": false, \"Term\": \"G05.1\" } } Constructors FanucPathSmoothingSyntax() Initializes a new instance with default settings. public FanucPathSmoothingSyntax() FanucPathSmoothingSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public FanucPathSmoothingSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.FeedrateSyntax.html", "title": "Class FeedrateSyntax | HiAPI-C# 2025", - "summary": "Class FeedrateSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. public class FeedrateSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FeedrateSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FeedrateSyntax() Initializes a new instance with default settings. public FeedrateSyntax() FeedrateSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public FeedrateSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FeedrateSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. public class FeedrateSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FeedrateSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples New F value with explicit G94 mode — both consumed, Unit derived as mm/min (G94 default): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G94\"], \"F\": 100 } } #AfterBuild: { \"Feedrate\": { \"FeedrateValue\": 100, \"Term\": \"G94\", \"Unit\": \"mm/min\" } } G95 mode flag only — feedrate value inherited from #Previous:; unit recomputed (mm/rev) from the new term: #Previous: { \"Feedrate\": { \"FeedrateValue\": 50, \"Term\": \"G94\", \"Unit\": \"mm/min\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G95\"] } } #AfterBuild: { \"Feedrate\": { \"FeedrateValue\": 50, \"Term\": \"G95\", \"Unit\": \"mm/rev\" } } F value only (no G94/G95 on this block) alongside an unrelated M03 flag — mode inherits from #Previous:; M03 stays in Parsing.Flags because CleanupParsing is only invoked on the mode-flag branch: #Previous: { \"Feedrate\": { \"FeedrateValue\": 50, \"Term\": \"G95\", \"Unit\": \"mm/rev\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"], \"F\": 200 } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Feedrate\": { \"FeedrateValue\": 200, \"Term\": \"G95\", \"Unit\": \"mm/rev\" } } Constructors FeedrateSyntax() Initializes a new instance with default settings. public FeedrateSyntax() FeedrateSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public FeedrateSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.FineBoringSyntax.html", @@ -4312,12 +4437,12 @@ "api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html", "title": "Class G53p1RotaryPositionSyntax | HiAPI-C# 2025", - "summary": "Class G53p1RotaryPositionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G53.1 — non-modal, one-shot rotary axis positioning. Positions the rotary axes (A/B/C) to align the physical tool axis with the active tilted work plane defined by G68.2. XYZ position is unchanged; only rotary axes move via rapid traverse. Requires IsoG68p2TiltSyntax (or equivalent) to have written the tilt transform. Uses IMachineKinematics to solve for the target A/B/C via inverse kinematics. Must be placed after IsoG68p2TiltSyntax (needs tilt data) and before ProgramXyzSyntax in the syntax chain. Writes A/B/C into MachineCoordinateState. Motion is handled by LinearMotionSyntax via modal G00/G01. public class G53p1RotaryPositionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object G53p1RotaryPositionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks When IMachineKinematics is not available (3-axis config), G53.1 is silently consumed with no positional effect. When G68.2 is not active, a validation error is reported. Optional explicit A/B/C on the G53.1 line (post-processor hints) override the IK result. These are read from Parsing via ConsumeAxis(JsonObject, string, Sentence, NcDiagnosticProgress) and consumed to prevent McAbcSyntax from double-processing. Constructors G53p1RotaryPositionSyntax() Initializes a new instance with default settings. public G53p1RotaryPositionSyntax() G53p1RotaryPositionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public G53p1RotaryPositionSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class G53p1RotaryPositionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll G53.1 — non-modal, one-shot rotary axis positioning. Positions the rotary axes (A/B/C) to align the physical tool axis with the active tilted work plane defined by G68.2. XYZ position is unchanged; only rotary axes move via rapid traverse. Requires IsoG68p2TiltSyntax (or equivalent) to have written the tilt transform. Uses IMachineKinematics to solve for the target A/B/C via inverse kinematics. Must be placed after IsoG68p2TiltSyntax (needs tilt data) and before ProgramXyzSyntax in the syntax chain. Writes A/B/C into MachineCoordinateState. Motion is handled by LinearMotionSyntax via modal G00/G01. public class G53p1RotaryPositionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object G53p1RotaryPositionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks When IMachineKinematics is not available (3-axis config), G53.1 is silently consumed with no positional effect. When G68.2 is not active, a validation error is reported. Optional explicit A/B/C on the G53.1 line (post-processor hints) override the IK result. These are read from Parsing via ConsumeAxis(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) and consumed to prevent McAbcSyntax from double-processing. Constructors G53p1RotaryPositionSyntax() Initializes a new instance with default settings. public G53p1RotaryPositionSyntax() G53p1RotaryPositionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public G53p1RotaryPositionSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax.html", "title": "Class HeidenhainCoordinateOffsetSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift). CYCL DEF 247 Q339=N: selects datum preset table entry N. CYCL DEF 7 #N: selects datum shift table entry N. CYCL DEF 7 X/Y/Z: applies direct XYZ shift values. For DIN/ISO compatibility (G54–G59), use IsoCoordinateOffsetSyntax in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source (TransformSource) so both syntaxes can coexist without double-composing. public class HeidenhainCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainCoordinateOffsetSyntax() Initializes a new instance with default settings. public HeidenhainCoordinateOffsetSyntax() HeidenhainCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift). CYCL DEF 247 Q339=N: selects datum preset table entry N. CYCL DEF 7 #N: selects datum shift table entry N. CYCL DEF 7 X/Y/Z: applies direct XYZ shift values. For DIN/ISO compatibility (G54–G59), use IsoCoordinateOffsetSyntax in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source (TransformSource) so both syntaxes can coexist without double-composing. public class HeidenhainCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Mat4d arrays are 16 plain doubles in column-major order; pure translation by (tx,ty,tz) is [1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. The syntax does not consume from Parsing — the CYCL DEF cycle number and its parameters survive for downstream syntaxes / round-trip emission. CYCL DEF 247 Q339=+1 with a HeidenhainDatumTable populated so preset row 1 = (50, 50, 0) — the syntax looks up the row and writes a synthetic CoordinateId = \"DATUM_PRESET_1\" reflecting the resolved preset index: #BeforeBuild: { \"Parsing\": { \"CYCL DEF\": 247, \"Q339\": \"+1\" } } #AfterBuild: { \"Parsing\": { \"CYCL DEF\": 247, \"Q339\": \"+1\" }, \"CoordinateOffset\": { \"CoordinateId\": \"DATUM_PRESET_1\", \"Offset_X\": 50, \"Offset_Y\": 50, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 50,50,0,1] } ] } CYCL DEF 7 #5 — datum shift table lookup via the # index (here mapped to (100, 200, 0)); CoordinateId records the resolved shift row id: #BeforeBuild: { \"Parsing\": { \"CYCL DEF\": 7, \"#\": 5 } } #AfterBuild: { \"Parsing\": { \"CYCL DEF\": 7, \"#\": 5 }, \"CoordinateOffset\": { \"CoordinateId\": \"DATUM_SHIFT_5\", \"Offset_X\": 100, \"Offset_Y\": 200, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,200,0,1] } ] } CYCL DEF 7 X10 Y20 Z5 — direct X/Y/Z form (no # index) writes the values straight into the offset; no HeidenhainDatumTable dep is required. CoordinateId is the literal \"DATUM_SHIFT_DIRECT\" sentinel: #BeforeBuild: { \"Parsing\": { \"CYCL DEF\": 7, \"X\": 10, \"Y\": 20, \"Z\": 5 } } #AfterBuild: { \"Parsing\": { \"CYCL DEF\": 7, \"X\": 10, \"Y\": 20, \"Z\": 5 }, \"CoordinateOffset\": { \"CoordinateId\": \"DATUM_SHIFT_DIRECT\", \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": 5 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1] } ] } Constructors HeidenhainCoordinateOffsetSyntax() Initializes a new instance with default settings. public HeidenhainCoordinateOffsetSyntax() HeidenhainCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html", @@ -4332,17 +4457,17 @@ "api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html", "title": "Class IncrementalResolveSyntax | HiAPI-C# 2025", - "summary": "Class IncrementalResolveSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves G91 incremental axis values to absolute in-place within Parsing and its sub-sections. Reads Term written by PositioningSyntax. WorkingPathList specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [[\"Parsing\"], [\"Parsing\", \"G28\"]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by ResolveCycleCoordinates(JsonObject, Vec3d, double?, double?, double, double) inside each cycle syntax class, which runs before this syntax. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for last known ProgramXyz to resolve incremental values. After this syntax, all axis values in the working paths are absolute — ProgramXyzSyntax can consume them without incremental logic. public class IncrementalResolveSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IncrementalResolveSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IncrementalResolveSyntax(List>) Initializes a new instance with the given working path list. public IncrementalResolveSyntax(List> workingPathList) Parameters workingPathList List> JSON paths to scan for incremental axis values; see WorkingPathList. IncrementalResolveSyntax(XElement) Initializes a new instance by deserializing the working path list from the given XML element. Falls back to Default.WorkingPathList when the element has no Path children. public IncrementalResolveSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with working paths covering the Parsing root and the Parsing.G28 intermediate XYZ subsection. public static IncrementalResolveSyntax Default { get; } Property Value IncrementalResolveSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string WorkingPathList JSON paths where this syntax searches for axis values (X/Y/Z) to convert from incremental to absolute when G91 is active. Each path is a list of segments navigating nested JSON objects. All matching paths are converted. public List> WorkingPathList { get; } Property Value List> Examples [[\"Parsing\"]] → Parsing root (normal XYZ) [[\"Parsing\", \"G28\"]] → Parsing.G28 (G28 intermediate XYZ) XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class IncrementalResolveSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves G91 incremental axis values to absolute in-place within Parsing and its sub-sections. Reads Term written by PositioningSyntax. WorkingPathList specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [[\"Parsing\"], [\"Parsing\", \"G28\"]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by ResolveCycleCoordinates(JsonObject, Vec3d, double?, double?, double, double) inside each cycle syntax class, which runs before this syntax. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for last known ProgramXyz to resolve incremental values. After this syntax, all axis values in the working paths are absolute — ProgramXyzSyntax can consume them without incremental logic. public class IncrementalResolveSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IncrementalResolveSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G90 (absolute) on the block — the syntax early-returns without touching Parsing.X/Y/Z, even though the values look like incremental deltas: #BeforeBuild: { \"Positioning\": { \"Term\": \"G90\", \"Mode\": \"Absolute\" }, \"Parsing\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"Positioning\": { \"Term\": \"G90\", \"Mode\": \"Absolute\" }, \"Parsing\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } G91 (incremental) with a #Previous: block carrying MachineCoordinateState=(100,200,300). Under the identity ProgramToMcTransform chain, GetLastProgramXyz recovers program XYZ equal to MC, so each axis in Parsing is rewritten to lastAbs + incremental: #Previous: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300 } } #BeforeBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" }, \"Parsing\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" }, \"Parsing\": { \"X\": 110, \"Y\": 220, \"Z\": 330 } } G91 + Parsing.G28 sub-section — exercises the second entry of the default WorkingPathList; the root Parsing has no X/Y/Z so the first path no-ops, but the [“Parsing”,“G28”] path picks up the G28 intermediate axes and resolves them against the same lastProgramXyz: #Previous: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300 } } #BeforeBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" }, \"Parsing\": { \"G28\": { \"X\": 5, \"Y\": 10, \"Z\": 15 } } } #AfterBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" }, \"Parsing\": { \"G28\": { \"X\": 105, \"Y\": 210, \"Z\": 315 } } } Constructors IncrementalResolveSyntax(List>) Initializes a new instance with the given working path list. public IncrementalResolveSyntax(List> workingPathList) Parameters workingPathList List> JSON paths to scan for incremental axis values; see WorkingPathList. IncrementalResolveSyntax(XElement) Initializes a new instance by deserializing the working path list from the given XML element. Falls back to Default.WorkingPathList when the element has no Path children. public IncrementalResolveSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with working paths covering the Parsing root and the Parsing.G28 intermediate XYZ subsection. public static IncrementalResolveSyntax Default { get; } Property Value IncrementalResolveSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string WorkingPathList JSON paths where this syntax searches for axis values (X/Y/Z) to convert from incremental to absolute when G91 is active. Each path is a list of segments navigating nested JSON objects. All matching paths are converted. public List> WorkingPathList { get; } Property Value List> Examples [[\"Parsing\"]] → Parsing root (normal XYZ) [[\"Parsing\", \"G28\"]] → Parsing.G28 (G28 intermediate XYZ) XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html", "title": "Class IsoCoordinateOffsetSyntax | HiAPI-C# 2025", - "summary": "Class IsoCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54–G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d via IIsoCoordinateConfig dependencies (e.g. brand parameter table or IsoCoordinateTable), composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. public class IsoCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IsoCoordinateOffsetSyntax() Initializes a new instance with default settings. public IsoCoordinateOffsetSyntax() IsoCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class IsoCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54–G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d via IIsoCoordinateConfig dependencies (e.g. brand parameter table or IsoCoordinateTable), composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. public class IsoCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples The Mat4d arrays below are written as 16 plain doubles in column-major order; the first 12 are the identity 3×3 rotation, the last 4 are the translation column (tx, ty, tz, 1). So a pure translation by (tx, ty, tz) is [1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. G54 flag on the block but no IIsoCoordinateConfig on the dep list — the resolved offset falls back to Vec3d.Zero and the composed translation is the identity matrix: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G54\"] } } #AfterBuild: { \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 0, \"Offset_Y\": 0, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } G55 flag with an IsoCoordinateTable providing G55 → (100, 50, -200) — the offset is written to the CoordinateOffset section and the same translation is composed into the transform chain: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G55\"] } } #AfterBuild: { \"CoordinateOffset\": { \"CoordinateId\": \"G55\", \"Offset_X\": 100, \"Offset_Y\": 50, \"Offset_Z\": -200 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,50,-200,1] } ] } No coordinate flag on the current block (e.g. an unrelated M03) but #Previous: carried G54 — modal lookback inherits G54, the dep is re-queried (so Offset_X/Y/Z are taken from the table, not from the previous block), and the transform chain is rebuilt. The unrelated M03 flag survives in Parsing.Flags because CleanupParsing only fires on the new-coord-flag branch: #Previous: { \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": -100 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": -100 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,-100,1] } ] } Constructors IsoCoordinateOffsetSyntax() Initializes a new instance with default settings. public IsoCoordinateOffsetSyntax() IsoCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IsoG68RotationSyntax.html", "title": "Class IsoG68RotationSyntax | HiAPI-C# 2025", - "summary": "Class IsoG68RotationSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). public class IsoG68RotationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoG68RotationSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Input: Parsing.G68 → {X,Y,Z,I,J,K,R} from ParameterizedFlagSyntax. If I/J/K not specified, rotation axis is determined by active plane: G17→Z, G18→Y, G19→X. Constructors IsoG68RotationSyntax() Initializes a new instance with default settings. public IsoG68RotationSyntax() IsoG68RotationSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoG68RotationSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class IsoG68RotationSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). public class IsoG68RotationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoG68RotationSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below avoid the cos/sin rotation math by using either G69 cancel (identity), the first-block default (no transform composed), or modal carry of an identity Mat4d. Mat4d arrays are 16 plain doubles in column-major order — see IsoCoordinateOffsetSyntax for the template. A future round can add a non-trivial G68 case by dumping the actual output and pasting the 16 doubles back into the marker. First block of the stream (no #Previous:, no G68/G69 on the block) — CarryForwardFromPrevious stamps a default TiltTransform.Term = \"G69\" so downstream lookback always sees a concrete state; no transform chain entry is composed: #BeforeBuild: { } #AfterBuild: { \"TiltTransform\": { \"Term\": \"G69\" } } G69 flag on the block — TryHandleG69 consumes it, writes the G69 section, and composes the identity Mat4d into the chain so any previously composed tilt rotation is overridden: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G69\"] } } #AfterBuild: { \"TiltTransform\": { \"Term\": \"G69\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } Modal carry: no G68/G69 on the current block, but #Previous: carries an active G68 with identity tilt Mat4d in its chain. The current block inherits TiltTransform.Term = \"G68\" and re-composes the same Mat4d into its own chain; unrelated M03 flag survives because this syntax does not touch Parsing during the carry path: #Previous: { \"TiltTransform\": { \"Term\": \"G68\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"TiltTransform\": { \"Term\": \"G68\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } Non-trivial G68 rotation: 90° around the Z axis (no I/J/K → plane normal of the default G17 plane) at the origin (no X/Y/Z → all 0). The Mat4d column-major layout is rotation 90° about Z (no translation since pivot is the origin); cos(π/2) is not exactly 0 in IEEE-754 so the diagonal carries the 6.123233995736766E-17 drift produced by Math.Cos(Math.PI / 2) — preserved verbatim per the no-shorthand marker convention: #BeforeBuild: { \"Parsing\": { \"G68\": { \"R\": 90 } } } #AfterBuild: { \"TiltTransform\": { \"Term\": \"G68\" }, \"ProgramToMcTransform\": [ { \"Source\": \"TiltTransform\", \"Kind\": \"Static\", \"Mat4d\": [6.123233995736766E-17, 1, 0, 0, -1, 6.123233995736766E-17, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] } ] } Remarks Input: Parsing.G68 → {X,Y,Z,I,J,K,R} from ParameterizedFlagSyntax. If I/J/K not specified, rotation axis is determined by active plane: G17→Z, G18→Y, G19→X. Constructors IsoG68RotationSyntax() Initializes a new instance with default settings. public IsoG68RotationSyntax() IsoG68RotationSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoG68RotationSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html", @@ -4352,37 +4477,37 @@ "api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.IsoLocalCoordinateOffsetSyntax.html", "title": "Class IsoLocalCoordinateOffsetSyntax | HiAPI-C# 2025", - "summary": "Class IsoLocalCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes IsoLocalCoordinateOffset section, and adds an \"IsoLocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. public class IsoLocalCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoLocalCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IsoLocalCoordinateOffsetSyntax() Initializes a new instance with default settings. public IsoLocalCoordinateOffsetSyntax() IsoLocalCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoLocalCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Fields TransformSource Identifier used as the transform source key when composing the local coordinate offset translation into the transform chain. public const string TransformSource = \"IsoLocalCoordinateOffset\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class IsoLocalCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes IsoLocalCoordinateOffset section, and adds an \"IsoLocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. public class IsoLocalCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object IsoLocalCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Mat4d arrays are 16 plain doubles in column-major order; pure translation by (tx,ty,tz) is [1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1] — see IsoCoordinateOffsetSyntax for the column-major template. First block of the stream (no #Previous:) — the syntax stamps a zero-offset section and an identity translation in the chain so downstream lookback always sees a concrete state: #BeforeBuild: { } #AfterBuild: { \"IsoLocalCoordinateOffset\": { \"Offset_X\": 0, \"Offset_Y\": 0, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"IsoLocalCoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } G52 X10 Y20 Z5 on a non-first block alongside an unrelated M03 flag — the G52 sub-section is consumed (removed from Parsing) and the translation is composed into the chain; the unrelated flag stays because this syntax does not call CleanupParsing: #Previous: { \"IsoLocalCoordinateOffset\": { \"Offset_X\": 0, \"Offset_Y\": 0, \"Offset_Z\": 0 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"], \"G52\": { \"X\": 10, \"Y\": 20, \"Z\": 5 } } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"IsoLocalCoordinateOffset\": { \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": 5 }, \"ProgramToMcTransform\": [ { \"Source\": \"IsoLocalCoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1] } ] } No G52 on the current block but #Previous: had a non-zero offset — modal lookback inherits it (with the translation re-composed into this block's chain): #Previous: { \"IsoLocalCoordinateOffset\": { \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": 5 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"IsoLocalCoordinateOffset\": { \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": 5 }, \"ProgramToMcTransform\": [ { \"Source\": \"IsoLocalCoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1] } ] } Constructors IsoLocalCoordinateOffsetSyntax() Initializes a new instance with default settings. public IsoLocalCoordinateOffsetSyntax() IsoLocalCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public IsoLocalCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Fields TransformSource Identifier used as the transform source key when composing the local coordinate offset translation into the transform chain. public const string TransformSource = \"IsoLocalCoordinateOffset\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html", "title": "Class LinearMotionSyntax | HiAPI-C# 2025", - "summary": "Class LinearMotionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes McLinear motion for linear commands (ISO G00/G01, Heidenhain L/LN). Detects motion mode from Flags, writes a one-shot MotionEvent section (form + isRapid) plus a modal MotionState section (Term) when MachineCoordinateState exists on the block. McLinearMotionSemantic discriminates between XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinateState. Must be placed after McAbcSyntax in the syntax chain. public class LinearMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object LinearMotionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LinearMotionSyntax() Initializes a new instance with default settings. public LinearMotionSyntax() LinearMotionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public LinearMotionSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class LinearMotionSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes McLinear motion for linear commands (ISO G00/G01, Heidenhain L/LN). Detects motion mode from Flags, writes a one-shot MotionEvent section (form + isRapid) plus a modal MotionState section (Term) when MachineCoordinateState exists on the block. McLinearMotionSemantic discriminates between XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinateState. Must be placed after McAbcSyntax in the syntax chain. public class LinearMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object LinearMotionSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G00 explicit + MachineCoordinateState on the block — both the modal MotionState and the one-shot MotionEvent are written; IsRapid is set only on rapid (G00); the parsing flag is consumed and Parsing is cleaned up: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G00\"] }, \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MotionState\": { \"Term\": \"G00\" }, \"MotionEvent\": { \"Form\": \"McLinear\", \"IsRapid\": true } } G01 explicit + MC — same shape but IsRapid is omitted on the event section (only written when true): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G01\"] }, \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MotionState\": { \"Term\": \"G01\" }, \"MotionEvent\": { \"Form\": \"McLinear\" } } No motion flag on the current block but MachineCoordinateState is present (e.g. a downstream syntax already wrote the endpoint) — the previous block's MotionState.Term is the only way to know G00 vs G01, so the modal carry path fires: #Previous: { \"MotionState\": { \"Term\": \"G01\" } } #BeforeBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MotionState\": { \"Term\": \"G01\" }, \"MotionEvent\": { \"Form\": \"McLinear\" } } Constructors LinearMotionSyntax() Initializes a new instance with default settings. public LinearMotionSyntax() LinearMotionSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public LinearMotionSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html", "title": "Class MachineCoordSelectSyntax | HiAPI-C# 2025", - "summary": "Class MachineCoordSelectSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Handles G53 (machine coordinate selection) — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, G53 is ignored per ISO standard. Must be placed before ProgramXyzSyntax in the syntax chain. When G53 is active, this syntax consumes X/Y/Z from Parsing and writes MachineCoordinateState directly, preventing ProgramXyzSyntax from processing them as program coordinates. public class MachineCoordSelectSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object MachineCoordSelectSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G53 with full axes (G54 offset = 100,50,-200): Input: G53 G00 X0. Y0. Z0. Output: MachineCoordinate = (0, 0, 0) ProgramXyz = (-100, -50, 200) [mc * inverse(transform)] G53 with partial axes (only Z specified): Input: G53 Z0. Output: MachineCoordinate = (prevMcX, prevMcY, 0) ProgramXyz derived from MC * inverse(transform) Constructors MachineCoordSelectSyntax() Initializes a new instance with default settings. public MachineCoordSelectSyntax() MachineCoordSelectSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public MachineCoordSelectSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class MachineCoordSelectSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Handles G53 (machine coordinate selection) — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, G53 is ignored per ISO standard. Must be placed before ProgramXyzSyntax in the syntax chain. When G53 is active, this syntax consumes X/Y/Z from Parsing and writes MachineCoordinateState directly, preventing ProgramXyzSyntax from processing them as program coordinates. public class MachineCoordSelectSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object MachineCoordSelectSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G53 with full XYZ on a first block (no #Previous:) — FindPreviousMc falls back to Vec3d.Zero, transform defaults to identity, so ProgramXyz equals MachineCoordinateState: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G53\"], \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } G53 with only Z specified — FindPreviousMc picks up X/Y from the previous block's MachineCoordinateState; Z is overwritten: #Previous: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 50, \"Z\": -200 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G53\"], \"Z\": 0 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 50, \"Z\": 0 }, \"ProgramXyz\": { \"X\": 100, \"Y\": 50, \"Z\": 0 } } G91 active on the same block → G53 is ignored per ISO standard; nothing is consumed and no machine-state section is written: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G53\"], \"X\": 10 }, \"Positioning\": { \"Term\": \"G91\" } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G53\"], \"X\": 10 }, \"Positioning\": { \"Term\": \"G91\" } } Constructors MachineCoordSelectSyntax() Initializes a new instance with default settings. public MachineCoordSelectSyntax() MachineCoordSelectSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public MachineCoordSelectSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html", "title": "Class McAbcCyclicPathSyntax | HiAPI-C# 2025", - "summary": "Class McAbcCyclicPathSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinateState need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. public class McAbcCyclicPathSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcCyclicPathSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors McAbcCyclicPathSyntax() Initializes a new instance with default settings. public McAbcCyclicPathSyntax() McAbcCyclicPathSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public McAbcCyclicPathSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class McAbcCyclicPathSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinateState need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. Two stages, mirroring McXyzSyntax: Root MachineCoordinateState — anchored at the previous block's modal rotary state. CompoundMotion.ItemsKey[*] — sequential walk through items, anchoring item 0 at the previous block's modal state and item i > 0 at item i-1's post-cycle value (per-axis chain). Items without a rotary MachineCoordinateState are skipped. The items pass enables rotary motion (e.g. G28 ABC intermediate / home stages) to surface as motion IAct segments rather than a single root-MC stamp. public class McAbcCyclicPathSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcCyclicPathSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Cases below run with no IMachineAxisConfig on the dep list, so the syntax uses the A/B/C fallback (a configuration warning is emitted but does not affect the JSON). The syntax is the tail-pass rotary-wrap centraliser — upstream rotary writers (McAbcSyntax, G28, G53.1, ...) store raw degrees and let this pass resolve to the shortest cyclic path. Current B is within ±180° of the previous B — no wrap needed; the value is rewritten in place but equals the input: #Previous: { \"MachineCoordinateState\": { \"B\": 0 } } #BeforeBuild: { \"MachineCoordinateState\": { \"B\": 10 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 10 } } Current B is 270° but previous B is 0° — the shortest path is the other way around, so the value is rewritten as -90° (mathematically equivalent, geometrically the same orientation, but signalling the shorter rotation to a downstream motion consumer). 270/0 round-trips through ToRad→Cycle→ToDeg with no rounding noise (1.5π → -0.5π → -90 exactly); other angle pairs (e.g. 350° → -10°) emit a trailing ULP-scale drift instead: #Previous: { \"MachineCoordinateState\": { \"B\": 0 } } #BeforeBuild: { \"MachineCoordinateState\": { \"B\": 270 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": -90 } } First block of the stream (no #Previous:) — no anchor to resolve against, so the syntax early-returns and the raw value is preserved verbatim: #BeforeBuild: { \"MachineCoordinateState\": { \"B\": 350 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 350 } } CompoundMotion.Items walk — two items chain: item 0 cycles against the previous block's modal B = 0° (270° → -90°), and item 1 cycles against item 0's post-cycle -90° (170° → -190°, since the shorter path from -90° to 170° wraps backward through -180°). If item 1 had used the previous-block anchor instead of the chained anchor, 170° would have stayed at 170° (already in the ±180° window around 0°), so the test discriminates between chain and no-chain: #Previous: { \"MachineCoordinateState\": { \"B\": 0 } } #BeforeBuild: { \"CompoundMotion\": { \"Items\": [ { \"MachineCoordinateState\": { \"B\": 270 } }, { \"MachineCoordinateState\": { \"B\": 170 } } ] } } #AfterBuild: { \"CompoundMotion\": { \"Items\": [ { \"MachineCoordinateState\": { \"B\": -90 } }, { \"MachineCoordinateState\": { \"B\": -190 } } ] } } Constructors McAbcCyclicPathSyntax() Initializes a new instance with default settings. public McAbcCyclicPathSyntax() McAbcCyclicPathSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public McAbcCyclicPathSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html", "title": "Class McAbcSyntax | HiAPI-C# 2025", - "summary": "Class McAbcSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes rotary axis values (A/B/C) into MachineCoordinateState from Parsing and modal lookback. Only active when IMachineAxisConfig declares rotary axes. Works for both 3+2-axis (no IMachineKinematics) and simultaneous 5-axis configurations. This syntax is intentionally ABC-only. When the block is rotary-only (no ProgramXyz, e.g. G00 A30.) the section is created with ABC but without X/Y/Z. McAbcXyzFallbackSyntax — placed after McXyzSyntax — copies X/Y/Z from the previous block's MachineCoordinateState to finish the section. Splitting the XYZ fill out lets this syntax run before McXyzSyntax (and before G43p4RtcpSyntax) without accidentally filling X/Y/Z from prev and thereby short-circuiting DeriveMcXyz(JsonObject, Mat4d). Missing rotary axes are filled from previous MachineCoordinateState lookback, unless the current section already has the value (e.g., from HomeMcInitializer). Values are stored in degrees (matching McAbcCyclicPathSyntax). Must be placed before McXyzSyntax so syntaxes that need the current-block ABC to compute transforms (e.g. G43p4RtcpSyntax) can see it; and before McAbcCyclicPathSyntax and LinearMotionSyntax. public class McAbcSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class McAbcSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes rotary axis values (A/B/C) into MachineCoordinateState from Parsing and modal lookback. Only active when IMachineAxisConfig declares rotary axes. Works for both 3+2-axis (no IMachineKinematics) and simultaneous 5-axis configurations. This syntax is intentionally ABC-only. When the block is rotary-only (no ProgramXyz, e.g. G00 A30.) the section is created with ABC but without X/Y/Z. McAbcXyzFallbackSyntax — placed after McXyzSyntax — copies X/Y/Z from the previous block's MachineCoordinateState to finish the section. Splitting the XYZ fill out lets this syntax run before McXyzSyntax (and before G43p4RtcpSyntax) without accidentally filling X/Y/Z from prev and thereby short-circuiting DeriveMcXyz(JsonObject, Mat4d). Missing rotary axes are filled from previous MachineCoordinateState lookback, unless the current section already has the value (e.g., from HomeMcInitializer). Values are stored in degrees (matching McAbcCyclicPathSyntax). Must be placed before McXyzSyntax so syntaxes that need the current-block ABC to compute transforms (e.g. G43p4RtcpSyntax) can see it; and before McAbcCyclicPathSyntax and LinearMotionSyntax. public class McAbcSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Cases 1 and 2 inject a TestDeps.AxisConfig declaring B and C as Rotary. Values are stored as raw degrees; shortest-cyclic resolution is a downstream pass via McAbcCyclicPathSyntax. No IMachineAxisConfig dep on the list — early-return no-op (the syntax only fires when rotary axes are declared): #BeforeBuild: { \"Parsing\": { \"B\": 45, \"C\": 90 } } #AfterBuild: { \"Parsing\": { \"B\": 45, \"C\": 90 } } AxisConfig declares B+C rotary; Parsing.B/C are consumed into a freshly created MachineCoordinateState section (X/Y/Z are deliberately left out so McXyzSyntax can still derive XYZ later — see class summary): #BeforeBuild: { \"Parsing\": { \"B\": 45, \"C\": 90 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 45, \"C\": 90 } } Only Parsing.B on the current block; #Previous: carries a full MC including C=0. The missing C is filled from the per-axis backward lookback (FindPreviousMcAxis(LazyLinkedListNode, string)): #Previous: { \"MachineCoordinateState\": { \"B\": 0, \"C\": 0 } } #BeforeBuild: { \"Parsing\": { \"B\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 30, \"C\": 0 } } Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html", "title": "Class McAbcXyzFallbackSyntax | HiAPI-C# 2025", - "summary": "Class McAbcXyzFallbackSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Fills missing X/Y/Z on an ABC-only MachineCoordinateState section. Behaviour depends on whether the block is under RTCP with rotary motion, as indicated by HasDynamicEntry(JsonObject): Non-dynamic (no RTCP or RTCP with ABC stable) — the programmed tool tip stays put in MC while rotary axes (if any) are unchanged, so we simply copy X/Y/Z from the previous block's MachineCoordinateState. This matches NC modal XYZ carry-forward for rotary-only blocks such as G00 A30. (non-RTCP pivoting). Dynamic (RTCP active + ABC changing) — the programmed tool tip must stay fixed in program coordinates while MC XYZ shifts to compensate the new rotary state. Looks up the last ProgramXyz and re-derives MC = inheritedProgramXyz × composedTransform, where the composed transform is the block's endpoint chain (now including PivotTransformSource as a full rotation+translation Mat4d, so the chain already encodes the kinematic IK). The carried ProgramXyz is also stamped onto the current block so downstream consumers see a consistent ProgramXyz + MC pair. Pair with McAbcSyntax, which runs early to write ABC but deliberately leaves X/Y/Z empty so McXyzSyntax can still derive MC XYZ from ProgramXyz via the transform chain when the block carries linear motion. If McXyzSyntax has nothing to derive (no ProgramXyz), this syntax completes the MC section as described above. Does nothing when the section already carries all three of X/Y/Z (normal linear-motion blocks), or when there is no section at all (pure parse-only block that introduces no MC). Must be placed after McXyzSyntax and before McAbcCyclicPathSyntax / LinearMotionSyntax. public class McAbcXyzFallbackSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcXyzFallbackSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class McAbcXyzFallbackSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Fills missing X/Y/Z on an ABC-only MachineCoordinateState section. Behaviour depends on whether the block is under RTCP with rotary motion, as indicated by HasDynamicEntry(JsonObject): Non-dynamic (no RTCP or RTCP with ABC stable) — the programmed tool tip stays put in MC while rotary axes (if any) are unchanged, so we simply copy X/Y/Z from the previous block's MachineCoordinateState. This matches NC modal XYZ carry-forward for rotary-only blocks such as G00 A30. (non-RTCP pivoting). Dynamic (RTCP active + ABC changing) — the programmed tool tip must stay fixed in program coordinates while MC XYZ shifts to compensate the new rotary state. Looks up the last ProgramXyz and re-derives MC = inheritedProgramXyz × composedTransform, where the composed transform is the block's endpoint chain (now including PivotTransformSource as a full rotation+translation Mat4d, so the chain already encodes the kinematic IK). The carried ProgramXyz is also stamped onto the current block so downstream consumers see a consistent ProgramXyz + MC pair. Pair with McAbcSyntax, which runs early to write ABC but deliberately leaves X/Y/Z empty so McXyzSyntax can still derive MC XYZ from ProgramXyz via the transform chain when the block carries linear motion. If McXyzSyntax has nothing to derive (no ProgramXyz), this syntax completes the MC section as described above. Does nothing when the section already carries all three of X/Y/Z (normal linear-motion blocks), or when there is no section at all (pure parse-only block that introduces no MC). Must be placed after McXyzSyntax and before McAbcCyclicPathSyntax / LinearMotionSyntax. public class McAbcXyzFallbackSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McAbcXyzFallbackSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below stay on the non-dynamic branch (no PivotTransformSource entry in the chain) so the RTCP re-derivation path is skipped. Block has no MachineCoordinateState section at all (pure parse-only) — the syntax early-returns and the block is unchanged: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G00\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G00\"] } } MC already complete (all three of X/Y/Z present) — the second guard fires and the section is preserved verbatim (no overwrite even if a #Previous: MC differed): #BeforeBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } Rotary-only MC on a rotary-only block (e.g. a 5-axis B+C trunnion machine running G00 B45. C90.) — missing X/Y/Z are copied from the #Previous: block's MC; the rotary keys keep their existing positions (insertion order) and X/Y/Z are appended. The previous block's MC carries the modal rotary state alongside X/Y/Z, but the fallback only reads X/Y/Z from it: #Previous: { \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300, \"B\": 0, \"C\": 0 } } #BeforeBuild: { \"MachineCoordinateState\": { \"B\": 45, \"C\": 90 } } #AfterBuild: { \"MachineCoordinateState\": { \"B\": 45, \"C\": 90, \"X\": 100, \"Y\": 200, \"Z\": 300 } } Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html", "title": "Class McXyzSyntax | HiAPI-C# 2025", - "summary": "Class McXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Derives MachineCoordinateState from ProgramXyz by applying the composed ProgramToMcTransform. Processes two stages: Root ProgramXyz → root MachineCoordinate CompoundMotion.ItemsKey[*] — derives MachineCoordinate from ProgramXyz for items that have ProgramXyz but no MachineCoordinate Must be placed after syntaxes that write ProgramXyz (e.g., ReferenceReturnSyntax) and before syntaxes that read MachineCoordinate (e.g., LinearMotionSyntax). public class McXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class McXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Derives MachineCoordinateState from ProgramXyz by applying the composed ProgramToMcTransform. Processes two stages: Root ProgramXyz → root MachineCoordinate CompoundMotion.ItemsKey[*] — derives MachineCoordinate from ProgramXyz for items that have ProgramXyz but no MachineCoordinate Must be placed after syntaxes that write ProgramXyz (e.g., ReferenceReturnSyntax) and before syntaxes that read MachineCoordinate (e.g., LinearMotionSyntax). public class McXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object McXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Root ProgramXyz only, no ProgramToMcTransform chain — composed transform is identity, so MC equals ProgramXyz: #BeforeBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MachineCoordinateState\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } Root MachineCoordinateState already present — guarded by the non-null check, so an upstream syntax's explicit MC is preserved verbatim (the derivation from ProgramXyz is skipped): #BeforeBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 }, \"MachineCoordinateState\": { \"X\": 100, \"Y\": 200, \"Z\": 300 } } CompoundMotion.Items[*] with ProgramXyz but no MachineCoordinateState — each item receives its own derived MC; items that already had MC (or had no ProgramXyz) are left alone: #BeforeBuild: { \"CompoundMotion\": { \"Items\": [ { \"ProgramXyz\": { \"X\": 1, \"Y\": 2, \"Z\": 3 } }, { \"MachineCoordinateState\": { \"X\": 9, \"Y\": 9, \"Z\": 9 } } ] } } #AfterBuild: { \"CompoundMotion\": { \"Items\": [ { \"ProgramXyz\": { \"X\": 1, \"Y\": 2, \"Z\": 3 }, \"MachineCoordinateState\": { \"X\": 1, \"Y\": 2, \"Z\": 3 } }, { \"MachineCoordinateState\": { \"X\": 9, \"Y\": 9, \"Z\": 9 } } ] } } Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html", @@ -4397,52 +4522,52 @@ "api/Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.PlaneSelectSyntax.html", "title": "Class PlaneSelectSyntax | HiAPI-C# 2025", - "summary": "Class PlaneSelectSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes G17/G18/G19 plane selection from Flags and writes IPlaneSelectDef section using conventional axis-pair names (XY/ZX/YZ). Modal — persists via backward lookback. Default is XY (G17). Downstream consumers (CircularMotionSyntax, IsoG68RotationSyntax) call GetPlaneNormalDir(JsonObject) to read the resolved plane. public class PlaneSelectSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PlaneSelectSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Default Default instance with standard settings. public static PlaneSelectSyntax Default { get; } Property Value PlaneSelectSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress GetPlaneNormalDir(JsonObject) Reads the PlaneSelect section and returns the perpendicular (normal) axis index: XY→2(Z), ZX→1(Y), YZ→0(X). public static int GetPlaneNormalDir(JsonObject json) Parameters json JsonObject Returns int MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class PlaneSelectSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes G17/G18/G19 plane selection from Flags and writes IPlaneSelectDef section using conventional axis-pair names (XY/ZX/YZ). Modal — persists via backward lookback. Default is XY (G17). Downstream consumers (CircularMotionSyntax, IsoG68RotationSyntax) call GetPlaneNormalDir(JsonObject) to read the resolved plane. public class PlaneSelectSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PlaneSelectSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G17\"] } } #AfterBuild: { \"PlaneSelect\": { \"Term\": \"G17\", \"Plane\": \"XY\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G18\", \"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"PlaneSelect\": { \"Term\": \"G18\", \"Plane\": \"ZX\" } } #Previous: { \"PlaneSelect\": { \"Term\": \"G19\", \"Plane\": \"YZ\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"PlaneSelect\": { \"Term\": \"G19\", \"Plane\": \"YZ\" } } Properties Default Default instance with standard settings. public static PlaneSelectSyntax Default { get; } Property Value PlaneSelectSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress GetPlaneNormalDir(JsonObject) Reads the PlaneSelect section and returns the perpendicular (normal) axis index: XY→2(Z), ZX→1(Y), YZ→0(X). public static int GetPlaneNormalDir(JsonObject json) Parameters json JsonObject Returns int MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html", "title": "Class PositioningSyntax | HiAPI-C# 2025", - "summary": "Class PositioningSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Detects G90/G91 positioning mode from Flags (or by modal lookback) and writes a Positioning section (Term, Mode) to the block JSON. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: would extend with AC()/IC() per-axis override. Does NOT convert incremental values — that is handled by IncrementalResolveSyntax which can be placed later in the syntax chain, after canned cycle syntaxes have consumed their parameters with cycle-specific G91 semantics. public class PositioningSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PositioningSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Default Default instance with standard settings. public static PositioningSyntax Default { get; } Property Value PositioningSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class PositioningSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Detects G90/G91 positioning mode from Flags (or by modal lookback) and writes a Positioning section (Term, Mode) to the block JSON. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: would extend with AC()/IC() per-axis override. Does NOT convert incremental values — that is handled by IncrementalResolveSyntax which can be placed later in the syntax chain, after canned cycle syntaxes have consumed their parameters with cycle-specific G91 semantics. public class PositioningSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object PositioningSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples G90 explicit — flag consumed, Positioning written with Mode=“Absolute”: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G90\"] } } #AfterBuild: { \"Positioning\": { \"Term\": \"G90\", \"Mode\": \"Absolute\" } } G91 explicit — flag consumed, Mode=“Incremental”: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G91\"] } } #AfterBuild: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" } } No positioning flag on the block but #Previous: carried G91 — modal lookback inherits G91; the unrelated M03 flag is left alone: #Previous: { \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Positioning\": { \"Term\": \"G91\", \"Mode\": \"Incremental\" } } Properties Default Default instance with standard settings. public static PositioningSyntax Default { get; } Property Value PositioningSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax.html", "title": "Class ProgramEndCleanSyntax | HiAPI-C# 2025", - "summary": "Class ProgramEndCleanSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Clears the per-block Vars.Volatile dictionary on blocks that triggered program end (M02 / M30, identified by the ProgramEnd section written by ProgramEndSyntax). Real Fanuc clears non-retained common variables (#100-#499) on program end + reset; this syntax models that behaviour at the simulator level. The clear happens on the same block that carried M02/M30 — the next block's VolatileVariableReadingSyntax carry then sees an empty dictionary on the predecessor and starts fresh. Pipeline placement: must run after both ProgramEndSyntax (which writes the ProgramEnd section this syntax checks) and VolatileVariableReadingSyntax (so the carry has already happened on this block; this syntax overwrites the result). Retained common variables (#500-#999, owned by RetainedCommonVariableTable) are untouched — they survive program end on real hardware (NV-RAM). Local variables (#1-#33, scope: macro call frame) are also untouched here; their lifecycle belongs to G65/G66/M99 push/pop, not program end. public class ProgramEndCleanSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramEndCleanSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProgramEndCleanSyntax() Default constructor. public ProgramEndCleanSyntax() ProgramEndCleanSyntax(XElement) Loads from XML produced by MakeXmlSource(string, string, bool); no state. public ProgramEndCleanSyntax(XElement src) Parameters src XElement Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ProgramEndCleanSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Clears the per-block Vars.Volatile dictionary on blocks that triggered program end (M02 / M30, identified by the ProgramEnd section written by ProgramEndSyntax). Real Fanuc clears non-retained common variables (#100-#499) on program end + reset; this syntax models that behaviour at the simulator level. The clear happens on the same block that carried M02/M30 — the next block's VolatileVariableReadingSyntax carry then sees an empty dictionary on the predecessor and starts fresh. Pipeline placement: must run after both ProgramEndSyntax (which writes the ProgramEnd section this syntax checks) and VolatileVariableReadingSyntax (so the carry has already happened on this block; this syntax overwrites the result). Retained common variables (#500-#999, owned by RetainedCommonVariableTable) are untouched — they survive program end on real hardware (NV-RAM). Local variables (#1-#33, scope: macro call frame) are also untouched here; their lifecycle belongs to G65/G66/M99 push/pop, not program end. Also clears any active FanucModalMacro on the same edge: a G66 modal that was still active when M02/M30 hit is implicitly cancelled, matching real Fanuc reset behaviour. The section is overwritten with a G67-shaped cancel marker so the carry mechanism in FanucModalMacroSyntax sees the boundary and does not propagate the modal past the program-end edge. public class ProgramEndCleanSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramEndCleanSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples M30 with a populated Vars.Volatile — the dictionary is wiped to an empty JsonObject in place (assignment, not removal, so downstream snapshots can distinguish “cleared on program end” from “block never had volatile data”): #BeforeBuild: { \"ProgramEnd\": { \"Term\": \"M30\" }, \"Vars\": { \"Volatile\": { \"#100\": 1.5, \"#101\": 2.5 } } } #AfterBuild: { \"ProgramEnd\": { \"Term\": \"M30\" }, \"Vars\": { \"Volatile\": {} } } M02 with an active G66 FanucModalMacro and no pre-existing Vars — the modal is overwritten with a G67-shaped cancel marker (P/L dropped), and a fresh Vars.Volatile dictionary is created: #BeforeBuild: { \"ProgramEnd\": { \"Term\": \"M02\" }, \"FanucModalMacro\": { \"Term\": \"G66\", \"P\": 1234, \"L\": 1 } } #AfterBuild: { \"ProgramEnd\": { \"Term\": \"M02\" }, \"FanucModalMacro\": { \"Term\": \"G67\" }, \"Vars\": { \"Volatile\": {} } } No ProgramEnd on the block (regular machining line) — the guard rejects the block; Vars.Volatile is left intact for downstream blocks to inherit via carry: #BeforeBuild: { \"Vars\": { \"Volatile\": { \"#100\": 1.5 } } } #AfterBuild: { \"Vars\": { \"Volatile\": { \"#100\": 1.5 } } } Constructors ProgramEndCleanSyntax() Default constructor. public ProgramEndCleanSyntax() ProgramEndCleanSyntax(XElement) Loads from XML produced by MakeXmlSource(string, string, bool); no state. public ProgramEndCleanSyntax(XElement src) Parameters src XElement Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html", "title": "Class ProgramEndSyntax | HiAPI-C# 2025", - "summary": "Class ProgramEndSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes M02/M30 (program end) from Flags and writes IProgramEndDef section. Downstream syntaxes that need to reset modal state on program end (e.g. IsoLocalCoordinateOffsetSyntax for G52 reset) should read the ProgramEnd section rather than scanning for M30 in Flags directly. Must be placed before syntaxes that depend on the ProgramEnd section. public class ProgramEndSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramEndSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProgramEndSyntax() Initializes a new instance with default settings. public ProgramEndSyntax() ProgramEndSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ProgramEndSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ProgramEndSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes M02/M30 (program end) from Flags and writes IProgramEndDef section. Downstream syntaxes that need to reset modal state on program end (e.g. IsoLocalCoordinateOffsetSyntax for G52 reset) should read the ProgramEnd section rather than scanning for M30 in Flags directly. Must be placed before syntaxes that depend on the ProgramEnd section. public class ProgramEndSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramEndSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M30\"] } } #AfterBuild: { \"ProgramEnd\": { \"Term\": \"M30\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M02\"] } } #AfterBuild: { \"ProgramEnd\": { \"Term\": \"M02\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } Constructors ProgramEndSyntax() Initializes a new instance with default settings. public ProgramEndSyntax() ProgramEndSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ProgramEndSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html", "title": "Class ProgramStopSyntax | HiAPI-C# 2025", - "summary": "Class ProgramStopSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes M00 (unconditional stop) and M01 (optional stop) from Flags and writes a IProgramStopDef section on the block that carried the flag. Non-modal: the section is written only on the exact block where the stop code appears. Siblings with ProgramEndSyntax (M02/M30) which handles end-of-program, not in-program stops. The parsing layer only records NC intent. Whether M01 actually pauses the run is a runtime/semantic decision gated by the operator's \"Optional Stop\" switch (analogous to IBlockSkipConfig for block skip). public class ProgramStopSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramStopSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ProgramStopSyntax() Initializes a new instance with default settings. public ProgramStopSyntax() ProgramStopSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ProgramStopSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ProgramStopSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes M00 (unconditional stop) and M01 (optional stop) from Flags and writes a IProgramStopDef section on the block that carried the flag. Non-modal: the section is written only on the exact block where the stop code appears. Siblings with ProgramEndSyntax (M02/M30) which handles end-of-program, not in-program stops. The parsing layer only records NC intent. Whether M01 actually pauses the run is a runtime/semantic decision gated by the operator's \"Optional Stop\" switch (analogous to IBlockSkipConfig for block skip). public class ProgramStopSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramStopSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M00\"] } } #AfterBuild: { \"ProgramStop\": { \"Term\": \"M00\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M01\", \"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"ProgramStop\": { \"Term\": \"M01\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M01\", \"M00\"] } } #AfterBuild: { \"ProgramStop\": { \"Term\": \"M00\" } } Constructors ProgramStopSyntax() Initializes a new instance with default settings. public ProgramStopSyntax() ProgramStopSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ProgramStopSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html", "title": "Class ProgramXyzSyntax | HiAPI-C# 2025", - "summary": "Class ProgramXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes ProgramXyz sub-object to SyntaxPiece.JsonObject. Must be placed after BundleSyntax since it uses cross-node lookback for last position. McXyzSyntax (placed after this in the chain) reads ProgramXyz and writes MachineCoordinateState. public class ProgramXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term “Program” is absolute positioning coordinate that can be end-user editing. The coordinate is usually the final node from the chain of coordinate transformation. Constructors ProgramXyzSyntax(List>) Initializes a new instance with the given working path list. public ProgramXyzSyntax(List> workingPathList) Parameters workingPathList List> JSON paths to scan for axis values; see WorkingPathList. ProgramXyzSyntax(XElement) Initializes a new instance by deserializing the working path list from the given XML element. Falls back to Default.WorkingPathList when the element has no Path children. public ProgramXyzSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with the working path resolving to the Parsing root. public static ProgramXyzSyntax Default { get; } Property Value ProgramXyzSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string WorkingPathList JSON paths where this syntax searches for axis values (X/Y/Z). Each path is a list of segments navigating nested JSON objects. First match is used. Empty list means root level. public List> WorkingPathList { get; } Property Value List> Examples [[\"L\"]] → fullJsonSrc[\"L\"] [[]] → fullJsonSrc (root) [[\"L\"], []] → try fullJsonSrc[\"L\"], fallback to root XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ProgramXyzSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes ProgramXyz sub-object to SyntaxPiece.JsonObject. Must be placed after BundleSyntax since it uses cross-node lookback for last position. McXyzSyntax (placed after this in the chain) reads ProgramXyz and writes MachineCoordinateState. public class ProgramXyzSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ProgramXyzSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples SUT uses Default so the default WorkingPathList points at the Parsing root. All cases stay on the identity-transform path so GetLastProgramXyz simply returns the previous block's MC. Full X/Y/Z in Parsing — values are read directly (no lookback), Parsing.X/Y/Z are consumed, ProgramXyz section is written; CleanupParsing removes the now-empty Parsing: #BeforeBuild: { \"Parsing\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 10, \"Y\": 20, \"Z\": 30 } } Only Z in Parsing with a #Previous: block carrying MachineCoordinateState=(50,60,70) — under the identity transform GetLastProgramXyz equals previous MC, so X/Y are inherited from prev and Z is taken from the parsed literal: #Previous: { \"MachineCoordinateState\": { \"X\": 50, \"Y\": 60, \"Z\": 70 } } #BeforeBuild: { \"Parsing\": { \"Z\": 0 } } #AfterBuild: { \"ProgramXyz\": { \"X\": 50, \"Y\": 60, \"Z\": 0 } } Parsing present but with no X/Y/Z (e.g. an unrelated M03 flag) — ResolveProgramXyz returns null and the syntax early-returns; the block is unchanged: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } Remarks The term “Program” is absolute positioning coordinate that can be end-user editing. The coordinate is usually the final node from the chain of coordinate transformation. Constructors ProgramXyzSyntax(List>) Initializes a new instance with the given working path list. public ProgramXyzSyntax(List> workingPathList) Parameters workingPathList List> JSON paths to scan for axis values; see WorkingPathList. ProgramXyzSyntax(XElement) Initializes a new instance by deserializing the working path list from the given XML element. Falls back to Default.WorkingPathList when the element has no Path children. public ProgramXyzSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with the working path resolving to the Parsing root. public static ProgramXyzSyntax Default { get; } Property Value ProgramXyzSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string WorkingPathList JSON paths where this syntax searches for axis values (X/Y/Z). Each path is a list of segments navigating nested JSON objects. First match is used. Empty list means root level. public List> WorkingPathList { get; } Property Value List> Examples [[\"L\"]] → fullJsonSrc[\"L\"] [[]] → fullJsonSrc (root) [[\"L\"], []] → try fullJsonSrc[\"L\"], fallback to root XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html", "title": "Class ProgramXyzUtil | HiAPI-C# 2025", - "summary": "Class ProgramXyzUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for ProgramXyz and MachineCoordinateState lookback and resolution. Used by ProgramXyzSyntax, ReferenceReturnSyntax, and semantic resolvers that need position lookback. Two strategies for \"what's the program coordinate at a block's endpoint?\" — both invert an MC value through an ProgramToMcTransform chain, but they pick the chain from different nodes: By current-state transform (ComputeProgramXyzByCurrentTransform(LazyLinkedListNode, Vec3d)) — modal anchor is MachineCoordinateState. Re-expresses an MC value (typically a predecessor's modal MC) into the current block's program frame using the current block's chain. Suitable for chain-change blocks where the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame; mirrors legacy HardNcLine.RebuildProgramXyzByMc. By corresponding-state transform (ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode)) — modal anchor is ProgramXyz. Recovers the program coordinate that nodeCarryingMc was originally commanded at, by inverting that same node's own transform on its own MC. Suitable for RTCP rotary-dynamic inheritance, where the modal invariant is \"tool tip in workpiece frame stays put while rotary axes turn\" — the recovered Vec3d carries forward as the next rotary block's modal ProgramXyz unchanged, regardless of how its PivotTransform differs. Both strategies yield the same Vec3d when prev and current share the same chain modal state; they only diverge across chain boundaries (RTCP toggle, coord-system swap, tilt activation) and at rotary motion (PivotTransform difference). Pick the wrong one and the result lands in a stale frame: Non-RTCP using \"corresponding\" — leaves the pre-chain-change values, so a block emitted right after G43.4 H03 would inherit ProgramXyz still in the G49 frame and the next motion's MC.Z drifts by the introduced tool-height offset. (This was the 2026-04-25 SoftNc / HardNc divergence on DemoPmcAirPlane/NC/02-ED6L20.NC.) RTCP using \"current\" — double-counts the rotary PivotTransform difference, so the inherited workpiece anchor rotates by the C delta on every rotary block. Direct callers of the two strategy helpers are rare — typically you call the dispatcher ResolveBlockProgramXyz(LazyLinkedListNode, Vec3d) (block's own MC vs predecessor lookback, picks strategy from HasDynamicEntry(JsonObject)) or GetLastProgramXyz(LazyLinkedListNode) (pure predecessor lookback). public static class ProgramXyzUtil Inheritance object ProgramXyzUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode) Strategy: by corresponding-state transform. Recovers the ProgramXyz that nodeCarryingMc was originally commanded at, by inverting that same node's ProgramToMcTransform on its own MachineCoordinateState. Modal invariant: ProgramXyz carries forward (RTCP rotary modal) — the workpiece-frame anchor survives downstream rotary motion regardless of how the next block's PivotTransform differs, so the next rotary-dynamic block can adopt this Vec3d unchanged as its modal ProgramXyz. Returns null when nodeCarryingMc has no usable MC. Called from the RTCP branch of GetLastProgramXyz(LazyLinkedListNode) and from ResolveBlockProgramXyz(LazyLinkedListNode, Vec3d) when the dispatched node has its own MC. public static Vec3d ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode nodeCarryingMc) Parameters nodeCarryingMc LazyLinkedListNode Returns Vec3d ComputeProgramXyzByCurrentTransform(LazyLinkedListNode, Vec3d) Strategy: by current-state transform. Re-expresses mc into currentNode's program frame by inverting currentNode's own ProgramToMcTransform chain. Modal invariant: MachineCoordinateState carries forward — between the source of mc and currentNode, the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame. Result is the program coordinate that, when transformed by currentNode's chain, yields mc back. Mirrors legacy HardNcLine.RebuildProgramXyzByMc; called from the non-RTCP branch of GetLastProgramXyz(LazyLinkedListNode). public static Vec3d ComputeProgramXyzByCurrentTransform(LazyLinkedListNode currentNode, Vec3d mc) Parameters currentNode LazyLinkedListNode mc Vec3d Returns Vec3d FindPreviousMc(LazyLinkedListNode) Finds the most recent MachineCoordinateState from previous SyntaxPiece nodes. Returns null if no previous position found. public static Vec3d FindPreviousMc(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns Vec3d FindPreviousMcXyzabc(LazyLinkedListNode, IMachineAxisConfig) Finds the most recent MachineCoordinateState XYZABC from previous nodes as DVec3d. Point = XYZ (mm), Normal = ABC (radians, converted from degrees in JSON). XYZ is taken from the first previous block whose MC has any of X/Y/Z set (typical motion-emitting block). ABC is then backfilled per axis for axes the machine actually has: if the XYZ-carrying block lacks a particular rotary value, we continue walking back to find the last block that wrote that axis (modal rotary state). This matches NC semantics — unchanged rotary axes carry forward silently — and prevents NaN rotary deltas from stopping ClLinearMotionSemantic's duration computation in RTCP contours where the XYZ block right before the current one didn't record ABC. axisConfig scopes the rotary-backfill to the machine's declared rotary axes (via GetRotaryAxes(IMachineAxisConfig)): non-rotary axes stay NaN and skip backward walking entirely. When axisConfig is null (callers without the dependency — e.g. legacy tests), all three A/B/C are attempted, matching the pre-axisConfig behaviour. Returns null if no previous MC with XYZ is found at all. Axes that have never been set stay NaN. public static DVec3d FindPreviousMcXyzabc(LazyLinkedListNode node, IMachineAxisConfig axisConfig = null) Parameters node LazyLinkedListNode axisConfig IMachineAxisConfig Returns DVec3d FindPreviousStoredProgramXyz(LazyLinkedListNode) Finds the most recent stored ProgramXyz from previous SyntaxPiece nodes — a raw-value lookback that returns whatever was written on disk, without MC-inversion or frame-change reconstruction. Contrast with GetLastProgramXyz(LazyLinkedListNode), which reconstructs the inherited program position as prev.MC × inverse(transform) and is sensitive to RTCP / chain-change boundaries. This helper is the simple parallel of FindPreviousMc(LazyLinkedListNode) — use it when a caller specifically needs \"what ProgramXyz did the last block write\" (e.g. the ProgramXyzBackfillSyntax change check). Returns null if no predecessor has ProgramXyz. public static Vec3d FindPreviousStoredProgramXyz(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns Vec3d GetLastProgramXyz(LazyLinkedListNode) Gets the modal ProgramXyz inherited by node from the most recent predecessor with an MachineCoordinateState. Dispatches between the two strategies documented on the class summary based on whether node's ProgramToMcTransform chain carries any KindDynamic entry (queried via HasDynamicEntry(JsonObject)): Has a Dynamic entry (RTCP rotary modal) → ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode) on the predecessor (recover prev's commanded ProgramXyz; carries forward unchanged because workpiece-frame tool tip is the modal anchor). All entries Static (chain-change / non-RTCP) → ComputeProgramXyzByCurrentTransform(LazyLinkedListNode, Vec3d) with node's own transform on the predecessor's MC (re-express prev MC in current program frame; MC is the modal anchor while the chain re-frames around it). When prev and current share the same chain modal state both strategies agree, so the discriminator only matters at chain boundaries / rotary motion. Returns Zero only when no predecessor has a usable MC (i.e. the start of the program with no motion emitted). public static Vec3d GetLastProgramXyz(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns Vec3d ReadMcXyzabc(JsonObject) Reads XYZABC from a MachineCoordinateState section as DVec3d. Point = XYZ (mm), Normal = ABC (radians, converted from degrees in JSON). Missing axes are NaN. Returns null if the section doesn't exist or has no XYZ. public static DVec3d ReadMcXyzabc(JsonObject ncBlock) Parameters ncBlock JsonObject Returns DVec3d ResolveBlockProgramXyz(LazyLinkedListNode, Vec3d) Resolves the ProgramXyz at node's endpoint — i.e. what ProgramXyzBackfillSyntax would write on node. Dispatcher; the actual inversion math runs inside one of the two strategy helpers documented on the class summary: node has its own MachineCoordinateState XYZ → ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode) on node itself (its own MC and own transform; the \"current\" / \"corresponding\" distinction collapses since both come from the same node). node has no own MC and prevStored is non-null → GetLastProgramXyz(LazyLinkedListNode) walks back to the most recent predecessor with MC and dispatches strategy from node's HasDynamicEntry(JsonObject) result. Both empty → return null; callers must not fabricate a spurious origin on the very first block. Shared by ProgramXyzBackfillSyntax (computing the snapshot value to write on node) and McAbcXyzFallbackSyntax (computing Previous's would-be snapshot to inherit on the current rotary-dynamic block — the Logic-stage caller cannot read prev's stored ProgramXyz because PostSyntaxs run after the whole Logic chain finishes). prevStored for the second use is taken from FindPreviousStoredProgramXyz(LazyLinkedListNode) on node's predecessor — the predecessor-of-predecessor's stored ProgramXyz — only as a guard against the spurious-origin case. public static Vec3d ResolveBlockProgramXyz(LazyLinkedListNode node, Vec3d prevStored) Parameters node LazyLinkedListNode prevStored Vec3d Returns Vec3d ResolveProgramXyz(JsonNode, LazyLinkedListNode, Sentence, NcDiagnosticProgress) Resolves X/Y/Z from a JSON section into absolute program coordinates. Fills missing axes from last program position via lookback. public static Vec3d ResolveProgramXyz(JsonNode xyzSource, LazyLinkedListNode syntaxPieceNode, Sentence sentence, NcDiagnosticProgress diag) Parameters xyzSource JsonNode JSON node containing X/Y/Z keys (e.g., Parsing root, Parsing.G28, Parsing.L). syntaxPieceNode LazyLinkedListNode Current node for lookback. sentence Sentence Source sentence used to attach diagnostics to the offending text span. diag NcDiagnosticProgress Diagnostic sink that receives parse errors for malformed X/Y/Z values. Returns Vec3d Absolute program coordinates, or null if no X/Y/Z found in xyzSource." + "summary": "Class ProgramXyzUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for ProgramXyz and MachineCoordinateState lookback and resolution. Used by ProgramXyzSyntax, ReferenceReturnSyntax, and semantic resolvers that need position lookback. Two strategies for \"what's the program coordinate at a block's endpoint?\" — both invert an MC value through an ProgramToMcTransform chain, but they pick the chain from different nodes: By current-state transform (ComputeProgramXyzByCurrentTransform(LazyLinkedListNode, Vec3d)) — modal anchor is MachineCoordinateState. Re-expresses an MC value (typically a predecessor's modal MC) into the current block's program frame using the current block's chain. Suitable for chain-change blocks where the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame; mirrors legacy HardNcLine.RebuildProgramXyzByMc. By corresponding-state transform (ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode)) — modal anchor is ProgramXyz. Recovers the program coordinate that nodeCarryingMc was originally commanded at, by inverting that same node's own transform on its own MC. Suitable for RTCP rotary-dynamic inheritance, where the modal invariant is \"tool tip in workpiece frame stays put while rotary axes turn\" — the recovered Vec3d carries forward as the next rotary block's modal ProgramXyz unchanged, regardless of how its PivotTransform differs. Both strategies yield the same Vec3d when prev and current share the same chain modal state; they only diverge across chain boundaries (RTCP toggle, coord-system swap, tilt activation) and at rotary motion (PivotTransform difference). Pick the wrong one and the result lands in a stale frame: Non-RTCP using \"corresponding\" — leaves the pre-chain-change values, so a block emitted right after G43.4 H03 would inherit ProgramXyz still in the G49 frame and the next motion's MC.Z drifts by the introduced tool-height offset. (This was the 2026-04-25 SoftNc / HardNc divergence on DemoPmcAirPlane/NC/02-ED6L20.NC.) RTCP using \"current\" — double-counts the rotary PivotTransform difference, so the inherited workpiece anchor rotates by the C delta on every rotary block. Direct callers of the two strategy helpers are rare — typically you call the dispatcher ResolveBlockProgramXyz(LazyLinkedListNode, Vec3d) (block's own MC vs predecessor lookback, picks strategy from HasDynamicEntry(JsonObject)) or GetLastProgramXyz(LazyLinkedListNode) (pure predecessor lookback). public static class ProgramXyzUtil Inheritance object ProgramXyzUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode) Strategy: by corresponding-state transform. Recovers the ProgramXyz that nodeCarryingMc was originally commanded at, by inverting that same node's ProgramToMcTransform on its own MachineCoordinateState. Modal invariant: ProgramXyz carries forward (RTCP rotary modal) — the workpiece-frame anchor survives downstream rotary motion regardless of how the next block's PivotTransform differs, so the next rotary-dynamic block can adopt this Vec3d unchanged as its modal ProgramXyz. Returns null when nodeCarryingMc has no usable MC. Called from the RTCP branch of GetLastProgramXyz(LazyLinkedListNode) and from ResolveBlockProgramXyz(LazyLinkedListNode, Vec3d) when the dispatched node has its own MC. public static Vec3d ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode nodeCarryingMc) Parameters nodeCarryingMc LazyLinkedListNode Returns Vec3d ComputeProgramXyzByCurrentTransform(LazyLinkedListNode, Vec3d) Strategy: by current-state transform. Re-expresses mc into currentNode's program frame by inverting currentNode's own ProgramToMcTransform chain. Modal invariant: MachineCoordinateState carries forward — between the source of mc and currentNode, the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame. Result is the program coordinate that, when transformed by currentNode's chain, yields mc back. Mirrors legacy HardNcLine.RebuildProgramXyzByMc; called from the non-RTCP branch of GetLastProgramXyz(LazyLinkedListNode). public static Vec3d ComputeProgramXyzByCurrentTransform(LazyLinkedListNode currentNode, Vec3d mc) Parameters currentNode LazyLinkedListNode mc Vec3d Returns Vec3d FindPreviousMc(LazyLinkedListNode) Finds the most recent MachineCoordinateState from previous SyntaxPiece nodes. Returns null if no previous position found. public static Vec3d FindPreviousMc(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns Vec3d FindPreviousMcXyzabc(LazyLinkedListNode, IMachineAxisConfig) Finds the most recent MachineCoordinateState XYZABC from previous nodes as DVec3d. Point = XYZ (mm), Normal = ABC (radians, converted from degrees in JSON). XYZ is taken from the first previous block whose MC has any of X/Y/Z set (typical motion-emitting block). ABC is then backfilled per axis for axes the machine actually has: if the XYZ-carrying block lacks a particular rotary value, we continue walking back to find the last block that wrote that axis (modal rotary state). This matches NC semantics — unchanged rotary axes carry forward silently — and prevents NaN rotary deltas from stopping ClLinearMotionSemantic's duration computation in RTCP contours where the XYZ block right before the current one didn't record ABC. axisConfig scopes the rotary-backfill to the machine's declared rotary axes (via GetRotaryAxes(IMachineAxisConfig)): non-rotary axes stay NaN and skip backward walking entirely. When axisConfig is null (callers without the dependency — e.g. legacy tests), all three A/B/C are attempted, matching the pre-axisConfig behaviour. Returns null if no previous MC with XYZ is found at all. Axes that have never been set stay NaN. public static DVec3d FindPreviousMcXyzabc(LazyLinkedListNode node, IMachineAxisConfig axisConfig = null) Parameters node LazyLinkedListNode axisConfig IMachineAxisConfig Returns DVec3d FindPreviousStoredProgramXyz(LazyLinkedListNode) Finds the most recent stored ProgramXyz from previous SyntaxPiece nodes — a raw-value lookback that returns whatever was written on disk, without MC-inversion or frame-change reconstruction. Contrast with GetLastProgramXyz(LazyLinkedListNode), which reconstructs the inherited program position as prev.MC × inverse(transform) and is sensitive to RTCP / chain-change boundaries. This helper is the simple parallel of FindPreviousMc(LazyLinkedListNode) — use it when a caller specifically needs \"what ProgramXyz did the last block write\" (e.g. the ProgramXyzBackfillSyntax change check). Returns null if no predecessor has ProgramXyz. public static Vec3d FindPreviousStoredProgramXyz(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns Vec3d GetLastProgramXyz(LazyLinkedListNode) Gets the modal ProgramXyz inherited by node from the most recent predecessor with an MachineCoordinateState. Dispatches between the two strategies documented on the class summary based on whether node's ProgramToMcTransform chain carries any KindDynamic entry (queried via HasDynamicEntry(JsonObject)): Has a Dynamic entry (RTCP rotary modal) → ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode) on the predecessor (recover prev's commanded ProgramXyz; carries forward unchanged because workpiece-frame tool tip is the modal anchor). All entries Static (chain-change / non-RTCP) → ComputeProgramXyzByCurrentTransform(LazyLinkedListNode, Vec3d) with node's own transform on the predecessor's MC (re-express prev MC in current program frame; MC is the modal anchor while the chain re-frames around it). When prev and current share the same chain modal state both strategies agree, so the discriminator only matters at chain boundaries / rotary motion. Returns Zero only when no predecessor has a usable MC (i.e. the start of the program with no motion emitted). public static Vec3d GetLastProgramXyz(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns Vec3d ReadMcXyzabc(JsonObject) Reads XYZABC from a MachineCoordinateState section as DVec3d. Point = XYZ (mm), Normal = ABC (radians, converted from degrees in JSON). Missing axes are NaN. Returns null if the section doesn't exist or has no XYZ. public static DVec3d ReadMcXyzabc(JsonObject ncBlock) Parameters ncBlock JsonObject Returns DVec3d ResolveBlockProgramXyz(LazyLinkedListNode, Vec3d) Resolves the ProgramXyz at node's endpoint — i.e. what ProgramXyzBackfillSyntax would write on node. Dispatcher; the actual inversion math runs inside one of the two strategy helpers documented on the class summary: node has its own MachineCoordinateState XYZ → ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode) on node itself (its own MC and own transform; the \"current\" / \"corresponding\" distinction collapses since both come from the same node). node has no own MC and prevStored is non-null → GetLastProgramXyz(LazyLinkedListNode) walks back to the most recent predecessor with MC and dispatches strategy from node's HasDynamicEntry(JsonObject) result. Both empty → return null; callers must not fabricate a spurious origin on the very first block. Shared by ProgramXyzBackfillSyntax (computing the snapshot value to write on node) and McAbcXyzFallbackSyntax (computing Previous's would-be snapshot to inherit on the current rotary-dynamic block — the Logic-stage caller cannot read prev's stored ProgramXyz because PostSyntaxs run after the whole Logic chain finishes). prevStored for the second use is taken from FindPreviousStoredProgramXyz(LazyLinkedListNode) on node's predecessor — the predecessor-of-predecessor's stored ProgramXyz — only as a guard against the spurious-origin case. public static Vec3d ResolveBlockProgramXyz(LazyLinkedListNode node, Vec3d prevStored) Parameters node LazyLinkedListNode prevStored Vec3d Returns Vec3d ResolveProgramXyz(JsonNode, LazyLinkedListNode, ISentenceCarrier, NcDiagnosticProgress) Resolves X/Y/Z from a JSON section into absolute program coordinates. Fills missing axes from last program position via lookback. public static Vec3d ResolveProgramXyz(JsonNode xyzSource, LazyLinkedListNode syntaxPieceNode, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters xyzSource JsonNode JSON node containing X/Y/Z keys (e.g., Parsing root, Parsing.G28, Parsing.L). syntaxPieceNode LazyLinkedListNode Current node for lookback. sentenceCarrier ISentenceCarrier Carrier used to attach diagnostics to the offending text span. diag NcDiagnosticProgress Diagnostic sink that receives parse errors for malformed X/Y/Z values. Returns Vec3d Absolute program coordinates, or null if no X/Y/Z found in xyzSource." }, "api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html", "title": "Class ReferenceReturnSyntax | HiAPI-C# 2025", - "summary": "Class ReferenceReturnSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Writes ICompoundMotionDef section for G28 reference point return. Reads intermediate XYZ from Parsing.G28 (written by G28Syntax) and converts to machine coordinates via ResolveProgramXyz(JsonNode, LazyLinkedListNode, Sentence, NcDiagnosticProgress). Must be placed after LinearMotionSyntax in the syntax chain. Removes the IMotionEventDef section written by LinearMotionSyntax (G28 handles its own motion). Overwrites root MachineCoordinateState and ProgramXyz with reference position for subsequent block lookback. public class ReferenceReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ReferenceReturnSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: G91 G28 Z0.0 (only Z specified → only Z goes to home) \"CompoundMotion\": { \"Term\": \"G28\", \"Items\": [ { \"ProgramXyz\": { \"X\": prevX, \"Y\": prevY, \"Z\": intermediate }, \"Motion\": { \"Form\": \"McLinear\", \"IsRapid\": true } }, { \"MachineCoordinate\": { \"X\": prevMcX, \"Y\": prevMcY, \"Z\": 0 }, \"Motion\": { \"Form\": \"McLinear\", \"IsRapid\": true } } ] } Only axes present in the G28 block move to home; others keep previous MC value. Item 0 uses ProgramXyz (intermediate point from NC program); McXyzSyntax derives its MachineCoordinate. Item 1 uses MachineCoordinate directly (selective home per axis). Root ProgramXyz is overwritten to the final position; McXyzSyntax derives the root MachineCoordinate. Constructors ReferenceReturnSyntax() Initializes a new instance with default settings. public ReferenceReturnSyntax() ReferenceReturnSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ReferenceReturnSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ReferenceReturnSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll public class ReferenceReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ReferenceReturnSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ReferenceReturnSyntax() Initializes a new instance with default settings (BareG28 = Alarm). public ReferenceReturnSyntax() ReferenceReturnSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ReferenceReturnSyntax(XElement src) Parameters src XElement Source XML element. Properties BareG28 Behaviour for a G28 block with no axis specifiers. Defaults to Alarm. public BareG28Behavior BareG28 { get; set; } Property Value BareG28Behavior Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html", "title": "Class RotaryAxisUtil | HiAPI-C# 2025", - "summary": "Class RotaryAxisUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for rotary axis (A/B/C) resolution. Used by G53p1RotaryPositionSyntax, McAbcSyntax, IsoG68p2TiltSyntax, and other syntaxes that read or write rotary axis values. public static class RotaryAxisUtil Inheritance object RotaryAxisUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ConsumeAxis(JsonObject, string, Sentence, NcDiagnosticProgress) Consumes an optional axis value (degrees) from Parsing. Post-processor hints (e.g., A/B/C on G68.2 or G53.1 lines) are parsed by FloatTagSetupSyntax into Parsing as doubles. Returns the value and removes the key, or null if not present. A non-numeric value (e.g. \"#124\" left by the parser stage) raises VariableExpression--Unevaluated via GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) instead of silently dropping the post-processor hint. The key is consumed regardless so downstream syntaxes do not re-process it. public static double? ConsumeAxis(JsonObject parsing, string axisName, Sentence sentence, NcDiagnosticProgress diag) Parameters parsing JsonObject axisName string sentence Sentence diag NcDiagnosticProgress Returns double? GetRotaryAxes(IMachineAxisConfig) Gets the rotary axis names from the given IMachineAxisConfig. Returns an empty array if no rotary axes exist. public static string[] GetRotaryAxes(IMachineAxisConfig axisConfig) Parameters axisConfig IMachineAxisConfig Returns string[]" + "summary": "Class RotaryAxisUtil Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Shared utilities for rotary axis (A/B/C) resolution. Used by G53p1RotaryPositionSyntax, McAbcSyntax, IsoG68p2TiltSyntax, and other syntaxes that read or write rotary axis values. public static class RotaryAxisUtil Inheritance object RotaryAxisUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ConsumeAxis(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) Consumes an optional axis value (degrees) from Parsing. Post-processor hints (e.g., A/B/C on G68.2 or G53.1 lines) are parsed by FloatTagSetupSyntax into Parsing as doubles. Returns the value and removes the key, or null if not present. A non-numeric value (e.g. \"#124\" left by the parser stage) raises VariableExpression--Unevaluated via GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) instead of silently dropping the post-processor hint. The key is consumed regardless so downstream syntaxes do not re-process it. public static double? ConsumeAxis(JsonObject parsing, string axisName, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters parsing JsonObject axisName string sentenceCarrier ISentenceCarrier diag NcDiagnosticProgress Returns double? GetRotaryAxes(IMachineAxisConfig) Gets the rotary axis names from the given IMachineAxisConfig. Returns an empty array if no rotary axes exist. public static string[] GetRotaryAxes(IMachineAxisConfig axisConfig) Parameters axisConfig IMachineAxisConfig Returns string[]" }, "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCoordinateOffsetSyntax.html", "title": "Class SiemensCoordinateOffsetSyntax | HiAPI-C# 2025", - "summary": "Class SiemensCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Siemens Assembly HiMech.dll Siemens Sinumerik: resolves work coordinate offset from G54–G57 (ISO-compatible), G505–G599 (extended Siemens), and G500 (cancel — machine coordinate mode). Reads from Flags, looks up IsoCoordinateTable dependency, composes into ProgramToMcTransform. public class SiemensCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SiemensCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SiemensCoordinateOffsetSyntax() Initializes a new instance with default settings. public SiemensCoordinateOffsetSyntax() SiemensCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public SiemensCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class SiemensCoordinateOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs.Siemens Assembly HiMech.dll Siemens Sinumerik: resolves work coordinate offset from G54–G57 (ISO-compatible), G505–G599 (extended Siemens), and G500 (cancel — machine coordinate mode). Reads from Flags, looks up IsoCoordinateTable dependency, composes into ProgramToMcTransform. public class SiemensCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SiemensCoordinateOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Unlike IsoCoordinateOffsetSyntax (Fanuc/ISO), this Siemens variant does not consume the coordinate flag from Parsing.Flags — the flag stays for downstream syntaxes / reconstruction. Mat4d arrays are 16 plain doubles in column-major order; pure translation by (tx,ty,tz) is [1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. G54 with an IsoCoordinateTable providing G54 → (10, 20, -100) — same shape as IsoCoordinateOffsetSyntax but the G54 flag survives: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G54\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G54\"] }, \"CoordinateOffset\": { \"CoordinateId\": \"G54\", \"Offset_X\": 10, \"Offset_Y\": 20, \"Offset_Z\": -100 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,-100,1] } ] } Siemens-extended G505 with a table entry for the same id — proves the syntax recognises the extended series, not only the ISO-compat G54–G57 subset: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G505\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G505\"] }, \"CoordinateOffset\": { \"CoordinateId\": \"G505\", \"Offset_X\": 100, \"Offset_Y\": 50, \"Offset_Z\": -200 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,50,-200,1] } ] } G500 cancel with no IIsoCoordinateConfig on the dep list — falls back to Vec3d.Zero; the resolved offset is zero and the composed translation is identity (matching the special case inside GetCoordinateOffset(string) for G500): #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G500\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"G500\"] }, \"CoordinateOffset\": { \"CoordinateId\": \"G500\", \"Offset_X\": 0, \"Offset_Y\": 0, \"Offset_Z\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"CoordinateOffset\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } Constructors SiemensCoordinateOffsetSyntax() Initializes a new instance with default settings. public SiemensCoordinateOffsetSyntax() SiemensCoordinateOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public SiemensCoordinateOffsetSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.Siemens.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.Siemens.html", @@ -4452,7 +4577,7 @@ "api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html", "title": "Class SpindleSpeedSyntax | HiAPI-C# 2025", - "summary": "Class SpindleSpeedSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes S (spindle speed) and M03/M04/M05 (spindle direction) from Parsing. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a ISpindleSpeedDef section. Direction is converted from ISO M-codes to the conventional SpindleDirection enum at this layer. public class SpindleSpeedSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SpindleSpeedSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SpindleSpeedSyntax() Initializes a new instance with default settings. public SpindleSpeedSyntax() SpindleSpeedSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public SpindleSpeedSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class SpindleSpeedSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes S (spindle speed) and M03/M04/M05 (spindle direction) from Parsing. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a ISpindleSpeedDef section. Direction is converted from ISO M-codes to the conventional SpindleDirection enum at this layer. public class SpindleSpeedSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SpindleSpeedSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples New S + M03 (CW) — both consumed; SpindleSpeed section written with the converted direction enum string: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"], \"S\": 2000 } } #AfterBuild: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 2000, \"Direction\": \"CW\" } } M04 (CCW) only — RPM inherited from #Previous:; direction updated to the new CCW state: #Previous: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 1500, \"Direction\": \"CW\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M04\"] } } #AfterBuild: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 1500, \"Direction\": \"CCW\" } } M05 (STOP) only — RPM still carried from #Previous: for bidirectional round-tripping; downstream consumers gate on Direction == STOP rather than RPM == 0: #Previous: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 1500, \"Direction\": \"CW\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M05\"] } } #AfterBuild: { \"SpindleSpeed\": { \"SpindleSpeed_rpm\": 1500, \"Direction\": \"STOP\" } } Constructors SpindleSpeedSyntax() Initializes a new instance with default settings. public SpindleSpeedSyntax() SpindleSpeedSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public SpindleSpeedSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html", @@ -4467,27 +4592,27 @@ "api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html", "title": "Class ToolChangeSyntax | HiAPI-C# 2025", - "summary": "Class ToolChangeSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes T (tool number) and M06 (tool change) from Parsing. T is modal — persists across blocks. M06 triggers the change. Writes resolved state to a ToolChange section: { “ToolId”: 1, “IsChange”: true, “Term”: “M06” }. TermKey records the trigger command and is only written when IsChangeKey is true (i.e. the block actually carried the tool-change M code); modal-only blocks omit it. public class ToolChangeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ToolChangeSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields IsChangeKey Section key indicating whether the current block actually triggers a tool change. public const string IsChangeKey = \"IsChange\" Field Value string SectionName JSON section name where the resolved tool-change state is written. public const string SectionName = \"ToolChange\" Field Value string TermKey Section key recording the trigger command (e.g., M06) when IsChangeKey is true. public const string TermKey = \"Term\" Field Value string ToolIdKey Section key holding the active tool number (modal). public const string ToolIdKey = \"ToolId\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ToolChangeSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Consumes T (tool number) and M06 (tool change) from Parsing. T is modal — persists across blocks. M06 triggers the change. Writes resolved state to a ToolChange section: { “ToolId”: 1, “IsChange”: true, “Term”: “M06” }. TermKey records the trigger command and is only written when IsChangeKey is true (i.e. the block actually carried the tool-change M code); modal-only blocks omit it. public class ToolChangeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ToolChangeSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples T5 + M06 — full tool change on one block; both T and M06 flag consumed, Term written: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M06\"], \"T\": 5 } } #AfterBuild: { \"ToolChange\": { \"ToolId\": 5, \"IsChange\": true, \"Term\": \"M06\" } } T5 alone alongside an unrelated flag — modal arming only, no actual change; IsChange=false and Term omitted. M03 is left in place because CleanupParsing only runs on the M06 branch: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"], \"T\": 7 } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"ToolChange\": { \"ToolId\": 7, \"IsChange\": false } } M06 alone — T comes from #Previous: modal lookback; IsChange=true, Term=“M06”: #Previous: { \"ToolChange\": { \"ToolId\": 5, \"IsChange\": false } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M06\"] } } #AfterBuild: { \"ToolChange\": { \"ToolId\": 5, \"IsChange\": true, \"Term\": \"M06\" } } Fields IsChangeKey Section key indicating whether the current block actually triggers a tool change. public const string IsChangeKey = \"IsChange\" Field Value string SectionName JSON section name where the resolved tool-change state is written. public const string SectionName = \"ToolChange\" Field Value string TermKey Section key recording the trigger command (e.g., M06) when IsChangeKey is true. public const string TermKey = \"Term\" Field Value string ToolIdKey Section key holding the active tool number (modal). public const string ToolIdKey = \"ToolId\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.ToolHeightOffsetSyntax.html", "title": "Class ToolHeightOffsetSyntax | HiAPI-C# 2025", - "summary": "Class ToolHeightOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves ISO tool height offset (G43/G44/G49) to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. RTCP modes (G43.4, TRAORI, M128) are handled by separate brand-specific syntaxes (e.g., G43p4RtcpSyntax). public class ToolHeightOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ToolHeightOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Input data locations in JsonObject: Parsing.G43 / Parsing.G44 → from ParameterizedFlagSyntax, {\"H\": \"5\"} Parsing.H → from IntegerTagSetupSyntax, standalone modal H (int) Parsing.Flags → from NumberedFlagSyntax, \"G49\" for cancellation ToolOrientation → from a prior syntax (optional, default = Transformation.AxialNormal or UnitZ) Modal state is persisted in the IToolHeightCompensationDef section (not syntax fields) and recovered from backward node traversal. Constructors ToolHeightOffsetSyntax() Initializes a new instance with default settings. public ToolHeightOffsetSyntax() ToolHeightOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ToolHeightOffsetSyntax(XElement src) Parameters src XElement Source XML element. Fields ToolOrientationKey JSON key under which the upstream tool orientation vector is read. public const string ToolOrientationKey = \"ToolOrientation\" Field Value string TransformSource Identifier used as the transform source key when composing the tool-height translation into ProgramToMcTransform. public const string TransformSource = \"ToolHeightCompensation\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ToolHeightOffsetSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Resolves ISO tool height offset (G43/G44/G49) to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. RTCP modes (G43.4, TRAORI, M128) are handled by separate brand-specific syntaxes (e.g., G43p4RtcpSyntax). public class ToolHeightOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ToolHeightOffsetSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples All cases below have no ToolOrientation section and no TiltTransform entry in the chain — the composed translation therefore lies along UnitZ (the identity tilt's AxialNormal), so Mat4d.Trans = (0, 0, height_mm). G43 H1 with a TestDeps.ToolOffset mapping offset 1 to 99.98 mm — full consume from Parsing.G43, positive sign on G43: #BeforeBuild: { \"Parsing\": { \"G43\": { \"H\": \"1\" } } } #AfterBuild: { \"ToolHeightCompensation\": { \"Offset_mm\": 99.98, \"Term\": \"G43\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,99.98,1] } ] } G49 cancel flag — writes a sentinel G49 section with Offset_mm = 0, OffsetId = 0, and composes an identity Mat4d so any previously composed tool-height translation is reset: #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G49\"] } } #AfterBuild: { \"ToolHeightCompensation\": { \"Offset_mm\": 0, \"Term\": \"G49\", \"OffsetId\": 0 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] } ] } No G43/G44/G49 on the current block but #Previous: carries an active G43 H1 — modal lookback inherits the term + offset id, re-queries the tool table, and re-composes the translation. The unrelated M03 flag survives because the consume path only triggers when an ISO term is on the current block: #Previous: { \"ToolHeightCompensation\": { \"Offset_mm\": 99.98, \"Term\": \"G43\", \"OffsetId\": 1 } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"ToolHeightCompensation\": { \"Offset_mm\": 99.98, \"Term\": \"G43\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,99.98,1] } ] } G44 H1 with the same TestDeps.ToolOffset offset-1 → 99.98 mm — G44 negates the table value, so Offset_mm = -99.98 and the composed translation lies along -UnitZ. The X/Y components of toolOrientation * -99.98 land on IEEE-754 negative zero (0 * -99.98 = -0.0), which System.Text.Json emits literally as -0: #BeforeBuild: { \"Parsing\": { \"G44\": { \"H\": \"1\" } } } #AfterBuild: { \"ToolHeightCompensation\": { \"Offset_mm\": -99.98, \"Term\": \"G44\", \"OffsetId\": 1 }, \"ProgramToMcTransform\": [ { \"Source\": \"ToolHeightCompensation\", \"Kind\": \"Static\", \"Mat4d\": [1,0,0,0, 0,1,0,0, 0,0,1,0, -0,-0,-99.98,1] } ] } Remarks Input data locations in JsonObject: Parsing.G43 / Parsing.G44 → from ParameterizedFlagSyntax, {\"H\": \"5\"} Parsing.H → from IntegerTagSetupSyntax, standalone modal H (int) Parsing.Flags → from NumberedFlagSyntax, \"G49\" for cancellation ToolOrientation → from a prior syntax (optional, default = Transformation.AxialNormal or UnitZ) Modal state is persisted in the IToolHeightCompensationDef section (not syntax fields) and recovered from backward node traversal. Constructors ToolHeightOffsetSyntax() Initializes a new instance with default settings. public ToolHeightOffsetSyntax() ToolHeightOffsetSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public ToolHeightOffsetSyntax(XElement src) Parameters src XElement Source XML element. Fields ToolOrientationKey JSON key under which the upstream tool orientation vector is read. public const string ToolOrientationKey = \"ToolOrientation\" Field Value string TransformSource Identifier used as the transform source key when composing the tool-height translation into ProgramToMcTransform. public const string TransformSource = \"ToolHeightCompensation\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html", "title": "Class UnitModeSyntax | HiAPI-C# 2025", - "summary": "Class UnitModeSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Detects the unit-system code (ISO Group 06: G20 inch / G21 metric) from Flags and writes a Unit section (Term, System). Modal — absence of an explicit flag inherits the previous block's unit, defaulting to Metric at program start. The HiNC pipeline works exclusively in millimetres. When G20 is detected this syntax emits an Unit--InchNotSupported Unsupported Error so upstream callers are forced to pre-convert the NC program to metric. G21 is accepted as a no-op confirmation of the default. public class UnitModeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object UnitModeSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors UnitModeSyntax() Initializes a new instance with default settings. public UnitModeSyntax() UnitModeSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public UnitModeSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with standard settings. public static UnitModeSyntax Default { get; } Property Value UnitModeSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class UnitModeSyntax Namespace Hi.NcParsers.LogicSyntaxs Assembly HiMech.dll Detects the unit-system code (ISO Group 06: G20 inch / G21 metric) from Flags and writes a Unit section (Term, System). Modal — absence of an explicit flag inherits the previous block's unit, defaulting to Metric at program start. The HiNC pipeline works exclusively in millimetres. When G20 is detected this syntax emits an Unit--InchNotSupported Unsupported Error so upstream callers are forced to pre-convert the NC program to metric. G21 is accepted as a no-op confirmation of the default. public class UnitModeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object UnitModeSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G21\"] } } #AfterBuild: { \"Unit\": { \"Term\": \"G21\", \"System\": \"Metric\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"G20\"] } } #AfterBuild: { \"Unit\": { \"Term\": \"G20\", \"System\": \"Inch\" } } #Previous: { \"Unit\": { \"Term\": \"G21\", \"System\": \"Metric\" } } #BeforeBuild: { \"Parsing\": { \"Flags\": [\"M03\"] } } #AfterBuild: { \"Parsing\": { \"Flags\": [\"M03\"] }, \"Unit\": { \"Term\": \"G21\", \"System\": \"Metric\" } } Constructors UnitModeSyntax() Initializes a new instance with default settings. public UnitModeSyntax() UnitModeSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public UnitModeSyntax(XElement src) Parameters src XElement Source XML element. Properties Default Default instance with standard settings. public static UnitModeSyntax Default { get; } Property Value UnitModeSyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.LogicSyntaxs.html": { "href": "api/Hi.NcParsers.LogicSyntaxs.html", "title": "Namespace Hi.NcParsers.LogicSyntaxs | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.LogicSyntaxs Classes BackBoringSyntax G87 back boring cycle. Supports modal repetition. Cuts upward from Z to R — used to bore the back side of a workpiece. Cycle sequence: Oriented spindle stop (OSS) at current position Rapid (shifted) to init position, then down to bottom Z — tool enters pre-drilled hole without contacting bore wall Shift back to hole center at bottom Spindle start (CW) Feed upward from Z to R-point (back boring cut) Oriented spindle stop at R Tool shift, rapid retract (shifted) to final Z Shift back to center, spindle restart Q specifies the lateral shift distance (mm). Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. BoringCycleSyntax G85/G86/G89 boring cycles. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G86 only] Spindle stop at bottom [G89 only] Dwell P seconds at bottom Retract: G85/G89 → feed retract, G86 → rapid retract [G86 only] Spindle restart (CW) after retract G85: feed to Z, feed retract — smooth bore finish. G86: feed to Z, spindle stop (implicit), rapid retract. G89: feed to Z, dwell P, feed retract — like G85 with bottom dwell. Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. CannedCycleResolveSyntax Resolves the canned-cycle Group-09 state for the current block and writes the result to the CannedCycle section. Active cycle (direct G81..G89 or modal repeat): merges Parsing overrides with previous-cycle stored params, applies G91 incremental-to-absolute conversion and missing-axis fallback, writes CannedCycle with Term, ReturnMode, and Params. The resolved cycle sub-section is left in Parsing under the cycle code for downstream cycle syntaxes (DrillingCycleSyntax, etc.) to read. Explicit cancel (G80 flag present on a non-cycle block): consumes the G80 flag and writes CannedCycle = { Term: \"G80\" }, acting as a hard sentinel for Hi.NcParsers.LogicSyntaxs.CannedCycleSyntaxUtil modal lookback. No Group-09 activity: leaves the block untouched. Must be placed after PositioningSyntax and before the individual cycle syntaxes in the chain. CircularMotionSyntax Writes McArc motion for circular commands (ISO G02/G03). Detects motion mode from Flags, reads I/J/K center offsets or R radius from Parsing, computes arc center in program coordinates, and writes a one-shot MotionEvent (form + arc params) plus a modal MotionState (Term). G02/G03 mode is modal (Group 01) — persists across blocks via Term. Arc parameters (I/J/K/R) are per-block and must be present in every arc block. Must be placed before LinearMotionSyntax in the syntax chain. Both share the Group 01 motion slot; whichever writes a MotionEvent first claims it. CoolantSyntax Consumes M07 (mist ON), M08 (flood ON), and M09 (coolant OFF) from Flags and writes the ICoolantDef section with both IsOn (convenience flag) and Mode (abstract mode name: Flood / Mist / Off). Modal — persists via backward lookback. CoordinateOffsetUtil Shared utilities for all coordinate offset syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. DrillingCycleSyntax G81/G82 drilling cycle (rapid retract). Supports modal repetition. G82 covers G81 — the only difference is an optional dwell (P) at the bottom. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G82 only] Dwell P seconds at bottom Rapid from bottom to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. FanucPathSmoothingSyntax Consumes Fanuc G05.1 (high-precision contour / AICC II / Nano Smoothing) and records the modal state in the PathSmoothing JSON section using the FanucPathSmoothing schema. Q1 enables, Q0 disables; the optional R{n} precision-level is preserved as Level. The simulation does not alter the tool path — this is a controller-internal interpolation black box; the captured state exists for bidirectional NC-text reconstruction. Modal carry to subsequent blocks is handled by ModalCarrySyntax, which already tracks the PathSmoothing section key and deep-clones it forward. FeedrateSyntax Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. FineBoringSyntax G76 fine boring cycle. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Oriented spindle stop (OSS) Tool shift by Q in +X direction (clear bore wall) Rapid retract (shifted) to final Z Tool shift back to center Spindle restart (CW) Q specifies the lateral shift distance (mm) to avoid dragging the tool across the finished bore surface during retract. Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. G43p4RtcpSyntax Handles G43.4 RTCP (Rotary Tool Center Point) activation. Writes the IToolHeightCompensationDef section and the ToolHeightCompensationSource entry in ProgramToMcTransform — a tool-normal · offset_mm translation at the block endpoint ABC. The chain entry is tagged KindDynamic when RTCP is active and ABC changes across the block, and KindStatic otherwise. The RTCP kinematic rotary part (Pn→MC rigid transform) is orthogonal to this syntax and is written by PivotTransformationSyntax on every block, because rotary state remains in effect beyond the RTCP modal (e.g. a non-RTCP G01 after G49 still inherits the last ABC from the program). The \"rotary dynamic\" distinction lives on the chain entry's KindKey alone and is read via HasDynamicEntry(JsonObject) by LinearMotionSyntax to pick ClLinear vs McLinear. G43.4 is used by Fanuc, Mazak, Syntec, and Okuma. Siemens (TRAORI) and Heidenhain (M128) are handled by separate syntaxes. Must be placed after ToolHeightOffsetSyntax (to override the ToolHeightCompensation entry when RTCP is active) and before PivotTransformationSyntax (which runs last in the chain). G53p1RotaryPositionSyntax G53.1 — non-modal, one-shot rotary axis positioning. Positions the rotary axes (A/B/C) to align the physical tool axis with the active tilted work plane defined by G68.2. XYZ position is unchanged; only rotary axes move via rapid traverse. Requires IsoG68p2TiltSyntax (or equivalent) to have written the tilt transform. Uses IMachineKinematics to solve for the target A/B/C via inverse kinematics. Must be placed after IsoG68p2TiltSyntax (needs tilt data) and before ProgramXyzSyntax in the syntax chain. Writes A/B/C into MachineCoordinateState. Motion is handled by LinearMotionSyntax via modal G00/G01. HighSpeedPeckCycleSyntax G73 high-speed peck drilling cycle (chip breaking). Supports modal repetition. Drills in increments of depth Q, partially retracting by PeckRetractionDistance_mm between strokes (instead of fully back to R like PeckDrillingCycleSyntax). Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: feed Q deeper, rapid retract by d If remainder exists: feed to bottom Z, rapid retract by d Rapid to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. IncrementalResolveSyntax Resolves G91 incremental axis values to absolute in-place within Parsing and its sub-sections. Reads Term written by PositioningSyntax. WorkingPathList specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [[\"Parsing\"], [\"Parsing\", \"G28\"]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by ResolveCycleCoordinates(JsonObject, Vec3d, double?, double?, double, double) inside each cycle syntax class, which runs before this syntax. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for last known ProgramXyz to resolve incremental values. After this syntax, all axis values in the working paths are absolute — ProgramXyzSyntax can consume them without incremental logic. IsoCoordinateOffsetSyntax ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54–G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d via IIsoCoordinateConfig dependencies (e.g. brand parameter table or IsoCoordinateTable), composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. IsoG68RotationSyntax ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). IsoG68p2TiltSyntax ISO/Fanuc: resolves G68.2 (tilted work plane) and G69 (cancel). Computes a tilt Mat4d from I/J/K euler angles (Fanuc ZXZ convention) and composes it into ProgramToMcTransform. Managed commands: G68.2, G69 (idempotent with IsoG68RotationSyntax). Siemens equivalent: CYCLE800 (separate syntax). Heidenhain equivalent: PLANE SPATIAL (separate syntax). IsoLocalCoordinateOffsetSyntax ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes IsoLocalCoordinateOffset section, and adds an \"IsoLocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. LinearMotionSyntax Writes McLinear motion for linear commands (ISO G00/G01, Heidenhain L/LN). Detects motion mode from Flags, writes a one-shot MotionEvent section (form + isRapid) plus a modal MotionState section (Term) when MachineCoordinateState exists on the block. McLinearMotionSemantic discriminates between XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinateState. Must be placed after McAbcSyntax in the syntax chain. MachineCoordSelectSyntax Handles G53 (machine coordinate selection) — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, G53 is ignored per ISO standard. Must be placed before ProgramXyzSyntax in the syntax chain. When G53 is active, this syntax consumes X/Y/Z from Parsing and writes MachineCoordinateState directly, preventing ProgramXyzSyntax from processing them as program coordinates. McAbcCyclicPathSyntax Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinateState need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. McAbcSyntax Writes rotary axis values (A/B/C) into MachineCoordinateState from Parsing and modal lookback. Only active when IMachineAxisConfig declares rotary axes. Works for both 3+2-axis (no IMachineKinematics) and simultaneous 5-axis configurations. This syntax is intentionally ABC-only. When the block is rotary-only (no ProgramXyz, e.g. G00 A30.) the section is created with ABC but without X/Y/Z. McAbcXyzFallbackSyntax — placed after McXyzSyntax — copies X/Y/Z from the previous block's MachineCoordinateState to finish the section. Splitting the XYZ fill out lets this syntax run before McXyzSyntax (and before G43p4RtcpSyntax) without accidentally filling X/Y/Z from prev and thereby short-circuiting DeriveMcXyz(JsonObject, Mat4d). Missing rotary axes are filled from previous MachineCoordinateState lookback, unless the current section already has the value (e.g., from HomeMcInitializer). Values are stored in degrees (matching McAbcCyclicPathSyntax). Must be placed before McXyzSyntax so syntaxes that need the current-block ABC to compute transforms (e.g. G43p4RtcpSyntax) can see it; and before McAbcCyclicPathSyntax and LinearMotionSyntax. McAbcXyzFallbackSyntax Fills missing X/Y/Z on an ABC-only MachineCoordinateState section. Behaviour depends on whether the block is under RTCP with rotary motion, as indicated by HasDynamicEntry(JsonObject): Non-dynamic (no RTCP or RTCP with ABC stable) — the programmed tool tip stays put in MC while rotary axes (if any) are unchanged, so we simply copy X/Y/Z from the previous block's MachineCoordinateState. This matches NC modal XYZ carry-forward for rotary-only blocks such as G00 A30. (non-RTCP pivoting). Dynamic (RTCP active + ABC changing) — the programmed tool tip must stay fixed in program coordinates while MC XYZ shifts to compensate the new rotary state. Looks up the last ProgramXyz and re-derives MC = inheritedProgramXyz × composedTransform, where the composed transform is the block's endpoint chain (now including PivotTransformSource as a full rotation+translation Mat4d, so the chain already encodes the kinematic IK). The carried ProgramXyz is also stamped onto the current block so downstream consumers see a consistent ProgramXyz + MC pair. Pair with McAbcSyntax, which runs early to write ABC but deliberately leaves X/Y/Z empty so McXyzSyntax can still derive MC XYZ from ProgramXyz via the transform chain when the block carries linear motion. If McXyzSyntax has nothing to derive (no ProgramXyz), this syntax completes the MC section as described above. Does nothing when the section already carries all three of X/Y/Z (normal linear-motion blocks), or when there is no section at all (pure parse-only block that introduces no MC). Must be placed after McXyzSyntax and before McAbcCyclicPathSyntax / LinearMotionSyntax. McXyzSyntax Derives MachineCoordinateState from ProgramXyz by applying the composed ProgramToMcTransform. Processes two stages: Root ProgramXyz → root MachineCoordinate CompoundMotion.ItemsKey[*] — derives MachineCoordinate from ProgramXyz for items that have ProgramXyz but no MachineCoordinate Must be placed after syntaxes that write ProgramXyz (e.g., ReferenceReturnSyntax) and before syntaxes that read MachineCoordinate (e.g., LinearMotionSyntax). PeckDrillingCycleSyntax G83 peck drilling cycle. Supports modal repetition. Drills in increments of depth Q, fully retracting to R between strokes. Cycle sequence (per stroke): Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: rapid to clearance above previous depth, feed Q deeper, rapid back to R If remainder exists: feed to bottom Z, rapid to R Rapid from R/bottom to final (G98 → init Z, G99 → R) Retraction distance is read from ICannedCycleConfig (Fanuc #4002 / Syntec Pr4002, or FallbackConfig fallback). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. PivotTransformationSyntax Writes the PivotTransformSource entry into ProgramToMcTransform on every block, capturing the Pn→MC kinematic rigid transform for the block's endpoint rotary state. Mirrors legacy HardNcLine.GetProgramXyz's use of McToPn(DVec3d) — without this entry, the transform chain would miss the rotary rotation on any block whose MachineCoordinate.ABC is non-zero, and McXyzSyntax (and ProgramXyzSyntax's inverse lookback) would silently drift. Scope is not limited to RTCP modal: as long as rotary axes are physically at a non-zero position (e.g. after a non-RTCP G00 B90 plus any subsequent motion), the kinematic chain still contributes a non-identity rigid transform that must appear in the endpoint chain. G43p4RtcpSyntax is orthogonal and only governs the dynamic-rotary KindKey tagging used by LinearMotionSyntax to pick the motion form. Chain position: must run after all Pn-frame writers (IsoG68p2TiltSyntax, ToolHeightOffsetSyntax, G43p4RtcpSyntax, IsoCoordinateOffsetSyntax, brand-specific coord offset syntaxes) so the PivotTransform entry naturally lands as the last chain element. Must run before McXyzSyntax / ProgramXyzSyntax so they see the completed chain. Silently no-ops when IMachineKinematics is absent (3-axis configurations without rotary kinematics). PlaneSelectSyntax Consumes G17/G18/G19 plane selection from Flags and writes IPlaneSelectDef section using conventional axis-pair names (XY/ZX/YZ). Modal — persists via backward lookback. Default is XY (G17). Downstream consumers (CircularMotionSyntax, IsoG68RotationSyntax) call GetPlaneNormalDir(JsonObject) to read the resolved plane. PositioningSyntax Detects G90/G91 positioning mode from Flags (or by modal lookback) and writes a Positioning section (Term, Mode) to the block JSON. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: would extend with AC()/IC() per-axis override. Does NOT convert incremental values — that is handled by IncrementalResolveSyntax which can be placed later in the syntax chain, after canned cycle syntaxes have consumed their parameters with cycle-specific G91 semantics. ProgramEndCleanSyntax Clears the per-block Vars.Volatile dictionary on blocks that triggered program end (M02 / M30, identified by the ProgramEnd section written by ProgramEndSyntax). Real Fanuc clears non-retained common variables (#100-#499) on program end + reset; this syntax models that behaviour at the simulator level. The clear happens on the same block that carried M02/M30 — the next block's VolatileVariableReadingSyntax carry then sees an empty dictionary on the predecessor and starts fresh. Pipeline placement: must run after both ProgramEndSyntax (which writes the ProgramEnd section this syntax checks) and VolatileVariableReadingSyntax (so the carry has already happened on this block; this syntax overwrites the result). Retained common variables (#500-#999, owned by RetainedCommonVariableTable) are untouched — they survive program end on real hardware (NV-RAM). Local variables (#1-#33, scope: macro call frame) are also untouched here; their lifecycle belongs to G65/G66/M99 push/pop, not program end. ProgramEndSyntax Consumes M02/M30 (program end) from Flags and writes IProgramEndDef section. Downstream syntaxes that need to reset modal state on program end (e.g. IsoLocalCoordinateOffsetSyntax for G52 reset) should read the ProgramEnd section rather than scanning for M30 in Flags directly. Must be placed before syntaxes that depend on the ProgramEnd section. ProgramStopSyntax Consumes M00 (unconditional stop) and M01 (optional stop) from Flags and writes a IProgramStopDef section on the block that carried the flag. Non-modal: the section is written only on the exact block where the stop code appears. Siblings with ProgramEndSyntax (M02/M30) which handles end-of-program, not in-program stops. The parsing layer only records NC intent. Whether M01 actually pauses the run is a runtime/semantic decision gated by the operator's \"Optional Stop\" switch (analogous to IBlockSkipConfig for block skip). ProgramXyzSyntax Resolves ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes ProgramXyz sub-object to SyntaxPiece.JsonObject. Must be placed after BundleSyntax since it uses cross-node lookback for last position. McXyzSyntax (placed after this in the chain) reads ProgramXyz and writes MachineCoordinateState. ProgramXyzUtil Shared utilities for ProgramXyz and MachineCoordinateState lookback and resolution. Used by ProgramXyzSyntax, ReferenceReturnSyntax, and semantic resolvers that need position lookback. Two strategies for \"what's the program coordinate at a block's endpoint?\" — both invert an MC value through an ProgramToMcTransform chain, but they pick the chain from different nodes: By current-state transform (ComputeProgramXyzByCurrentTransform(LazyLinkedListNode, Vec3d)) — modal anchor is MachineCoordinateState. Re-expresses an MC value (typically a predecessor's modal MC) into the current block's program frame using the current block's chain. Suitable for chain-change blocks where the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame; mirrors legacy HardNcLine.RebuildProgramXyzByMc. By corresponding-state transform (ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode)) — modal anchor is ProgramXyz. Recovers the program coordinate that nodeCarryingMc was originally commanded at, by inverting that same node's own transform on its own MC. Suitable for RTCP rotary-dynamic inheritance, where the modal invariant is \"tool tip in workpiece frame stays put while rotary axes turn\" — the recovered Vec3d carries forward as the next rotary block's modal ProgramXyz unchanged, regardless of how its PivotTransform differs. Both strategies yield the same Vec3d when prev and current share the same chain modal state; they only diverge across chain boundaries (RTCP toggle, coord-system swap, tilt activation) and at rotary motion (PivotTransform difference). Pick the wrong one and the result lands in a stale frame: Non-RTCP using \"corresponding\" — leaves the pre-chain-change values, so a block emitted right after G43.4 H03 would inherit ProgramXyz still in the G49 frame and the next motion's MC.Z drifts by the introduced tool-height offset. (This was the 2026-04-25 SoftNc / HardNc divergence on DemoPmcAirPlane/NC/02-ED6L20.NC.) RTCP using \"current\" — double-counts the rotary PivotTransform difference, so the inherited workpiece anchor rotates by the C delta on every rotary block. Direct callers of the two strategy helpers are rare — typically you call the dispatcher ResolveBlockProgramXyz(LazyLinkedListNode, Vec3d) (block's own MC vs predecessor lookback, picks strategy from HasDynamicEntry(JsonObject)) or GetLastProgramXyz(LazyLinkedListNode) (pure predecessor lookback). ReferenceReturnSyntax Writes ICompoundMotionDef section for G28 reference point return. Reads intermediate XYZ from Parsing.G28 (written by G28Syntax) and converts to machine coordinates via ResolveProgramXyz(JsonNode, LazyLinkedListNode, Sentence, NcDiagnosticProgress). Must be placed after LinearMotionSyntax in the syntax chain. Removes the IMotionEventDef section written by LinearMotionSyntax (G28 handles its own motion). Overwrites root MachineCoordinateState and ProgramXyz with reference position for subsequent block lookback. RotaryAxisUtil Shared utilities for rotary axis (A/B/C) resolution. Used by G53p1RotaryPositionSyntax, McAbcSyntax, IsoG68p2TiltSyntax, and other syntaxes that read or write rotary axis values. SpindleSpeedSyntax Consumes S (spindle speed) and M03/M04/M05 (spindle direction) from Parsing. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a ISpindleSpeedDef section. Direction is converted from ISO M-codes to the conventional SpindleDirection enum at this layer. TappingCycleSyntax G84 (right-hand) / G74 (left-hand) tapping cycles. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Spindle reverse at bottom Feed retract to final Z (G98 → init Z, G99 → R) Spindle restore to forward direction G84: forward = CW (M03), reverse = CCW (M04). G74: forward = CCW (M04), reverse = CW (M03). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. TiltTransformUtil Shared utilities for all tilt transform syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. ToolChangeSyntax Consumes T (tool number) and M06 (tool change) from Parsing. T is modal — persists across blocks. M06 triggers the change. Writes resolved state to a ToolChange section: { “ToolId”: 1, “IsChange”: true, “Term”: “M06” }. TermKey records the trigger command and is only written when IsChangeKey is true (i.e. the block actually carried the tool-change M code); modal-only blocks omit it. ToolHeightOffsetSyntax Resolves ISO tool height offset (G43/G44/G49) to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. RTCP modes (G43.4, TRAORI, M128) are handled by separate brand-specific syntaxes (e.g., G43p4RtcpSyntax). UnitModeSyntax Detects the unit-system code (ISO Group 06: G20 inch / G21 metric) from Flags and writes a Unit section (Term, System). Modal — absence of an explicit flag inherits the previous block's unit, defaulting to Metric at program start. The HiNC pipeline works exclusively in millimetres. When G20 is detected this syntax emits an Unit--InchNotSupported Unsupported Error so upstream callers are forced to pre-convert the NC program to metric. G21 is accepted as a no-op confirmation of the default." + "summary": "Namespace Hi.NcParsers.LogicSyntaxs Classes BackBoringSyntax G87 back boring cycle. Supports modal repetition. Cuts upward from Z to R — used to bore the back side of a workpiece. Cycle sequence: Oriented spindle stop (OSS) at current position Rapid (shifted) to init position, then down to bottom Z — tool enters pre-drilled hole without contacting bore wall Shift back to hole center at bottom Spindle start (CW) Feed upward from Z to R-point (back boring cut) Oriented spindle stop at R Tool shift, rapid retract (shifted) to final Z Shift back to center, spindle restart Q specifies the lateral shift distance (mm). Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. BoringCycleSyntax G85/G86/G89 boring cycles. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G86 only] Spindle stop at bottom [G89 only] Dwell P seconds at bottom Retract: G85/G89 → feed retract, G86 → rapid retract [G86 only] Spindle restart (CW) after retract G85: feed to Z, feed retract — smooth bore finish. G86: feed to Z, spindle stop (implicit), rapid retract. G89: feed to Z, dwell P, feed retract — like G85 with bottom dwell. Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. CannedCycleResolveSyntax Resolves the canned-cycle Group-09 state for the current block and writes the result to the CannedCycle section. Active cycle (direct G81..G89 or modal repeat): merges Parsing overrides with previous-cycle stored params, applies G91 incremental-to-absolute conversion and missing-axis fallback, writes CannedCycle with Term, ReturnMode, and Params. The resolved cycle sub-section is left in Parsing under the cycle code for downstream cycle syntaxes (DrillingCycleSyntax, etc.) to read. Explicit cancel (G80 flag present on a non-cycle block): consumes the G80 flag and writes CannedCycle = { Term: \"G80\" }, acting as a hard sentinel for Hi.NcParsers.LogicSyntaxs.CannedCycleSyntaxUtil modal lookback. No Group-09 activity: leaves the block untouched. Must be placed after PositioningSyntax and before the individual cycle syntaxes in the chain. CircularMotionSyntax Writes McArc motion for circular commands (ISO G02/G03). Detects motion mode from Flags, reads I/J/K center offsets or R radius from Parsing, computes arc center in program coordinates, and writes a one-shot MotionEvent (form + arc params) plus a modal MotionState (Term). G02/G03 mode is modal (Group 01) — persists across blocks via Term. Arc parameters (I/J/K/R) are per-block and must be present in every arc block. Must be placed before LinearMotionSyntax in the syntax chain. Both share the Group 01 motion slot; whichever writes a MotionEvent first claims it. CoolantSyntax Consumes M07 (mist ON), M08 (flood ON), and M09 (coolant OFF) from Flags and writes the ICoolantDef section with both IsOn (convenience flag) and Mode (abstract mode name: Flood / Mist / Off). Modal — persists via backward lookback. CoordinateOffsetUtil Shared utilities for all coordinate offset syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. DrillingCycleSyntax G81/G82 drilling cycle (rapid retract). Supports modal repetition. G82 covers G81 — the only difference is an optional dwell (P) at the bottom. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z [G82 only] Dwell P seconds at bottom Rapid from bottom to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. FanucPathSmoothingSyntax Consumes Fanuc G05.1 (high-precision contour / AICC II / Nano Smoothing) and records the modal state in the PathSmoothing JSON section using the FanucPathSmoothing schema. Q1 enables, Q0 disables; the optional R{n} precision-level is preserved as Level. The simulation does not alter the tool path — this is a controller-internal interpolation black box; the captured state exists for bidirectional NC-text reconstruction. Modal carry to subsequent blocks is handled by ModalCarrySyntax, which already tracks the PathSmoothing section key and deep-clones it forward. FeedrateSyntax Consumes F (feedrate) from Parsing and G94/G95 mode from Flags. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a IFeedrateDef section. FineBoringSyntax G76 fine boring cycle. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Oriented spindle stop (OSS) Tool shift by Q in +X direction (clear bore wall) Rapid retract (shifted) to final Z Tool shift back to center Spindle restart (CW) Q specifies the lateral shift distance (mm) to avoid dragging the tool across the finished bore surface during retract. Shift direction defaults to +X (OSS angle 0°). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax before this syntax runs. G43p4RtcpSyntax Handles G43.4 RTCP (Rotary Tool Center Point) activation. Writes the IToolHeightCompensationDef section and the ToolHeightCompensationSource entry in ProgramToMcTransform — a tool-normal · offset_mm translation at the block endpoint ABC. The chain entry is tagged KindDynamic when RTCP is active and ABC changes across the block, and KindStatic otherwise. The RTCP kinematic rotary part (Pn→MC rigid transform) is orthogonal to this syntax and is written by PivotTransformationSyntax on every block, because rotary state remains in effect beyond the RTCP modal (e.g. a non-RTCP G01 after G49 still inherits the last ABC from the program). The \"rotary dynamic\" distinction lives on the chain entry's KindKey alone and is read via HasDynamicEntry(JsonObject) by LinearMotionSyntax to pick ClLinear vs McLinear. G43.4 is used by Fanuc, Mazak, Syntec, and Okuma. Siemens (TRAORI) and Heidenhain (M128) are handled by separate syntaxes. Must be placed after ToolHeightOffsetSyntax (to override the ToolHeightCompensation entry when RTCP is active) and before PivotTransformationSyntax (which runs last in the chain). G53p1RotaryPositionSyntax G53.1 — non-modal, one-shot rotary axis positioning. Positions the rotary axes (A/B/C) to align the physical tool axis with the active tilted work plane defined by G68.2. XYZ position is unchanged; only rotary axes move via rapid traverse. Requires IsoG68p2TiltSyntax (or equivalent) to have written the tilt transform. Uses IMachineKinematics to solve for the target A/B/C via inverse kinematics. Must be placed after IsoG68p2TiltSyntax (needs tilt data) and before ProgramXyzSyntax in the syntax chain. Writes A/B/C into MachineCoordinateState. Motion is handled by LinearMotionSyntax via modal G00/G01. HighSpeedPeckCycleSyntax G73 high-speed peck drilling cycle (chip breaking). Supports modal repetition. Drills in increments of depth Q, partially retracting by PeckRetractionDistance_mm between strokes (instead of fully back to R like PeckDrillingCycleSyntax). Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: feed Q deeper, rapid retract by d If remainder exists: feed to bottom Z, rapid retract by d Rapid to final (G98 → init Z, G99 → R) Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. IncrementalResolveSyntax Resolves G91 incremental axis values to absolute in-place within Parsing and its sub-sections. Reads Term written by PositioningSyntax. WorkingPathList specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [[\"Parsing\"], [\"Parsing\", \"G28\"]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by ResolveCycleCoordinates(JsonObject, Vec3d, double?, double?, double, double) inside each cycle syntax class, which runs before this syntax. Uses AxisNames to determine which tags are motion axes. Traces backward nodes for last known ProgramXyz to resolve incremental values. After this syntax, all axis values in the working paths are absolute — ProgramXyzSyntax can consume them without incremental logic. IsoCoordinateOffsetSyntax ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54–G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from Flags, looks up offset Vec3d via IIsoCoordinateConfig dependencies (e.g. brand parameter table or IsoCoordinateTable), composes into ProgramToMcTransform. Modal — active coordinate persists via backward lookback. Default coordinate ID is set by StaticInitializer. IsoG68RotationSyntax ISO/Fanuc: resolves G68 (2D coordinate rotation) and G69 (cancel). Computes a rotation Mat4d around the active plane normal and composes it into ProgramToMcTransform. No IMachineKinematics dependency needed — G68 is pure geometric rotation. Managed commands: G68, G69 (idempotent with IsoG68p2TiltSyntax). IsoG68p2TiltSyntax ISO/Fanuc: resolves G68.2 (tilted work plane) and G69 (cancel). Computes a tilt Mat4d from I/J/K euler angles (Fanuc ZXZ convention) and composes it into ProgramToMcTransform. Managed commands: G68.2, G69 (idempotent with IsoG68RotationSyntax). Siemens equivalent: CYCLE800 (separate syntax). Heidenhain equivalent: PLANE SPATIAL (separate syntax). IsoLocalCoordinateOffsetSyntax ISO G52: Local coordinate system offset (additive to G54-series). G52 X10 Y20 Z5 → sets local offset. G52 X0 Y0 Z0 → cancels (resets to zero). M30 (program end) → also cancels. Reads Parsing.G52 (from G52Syntax), writes IsoLocalCoordinateOffset section, and adds an \"IsoLocalCoordinateOffset\" entry to the transformation chain. Modal — persists via backward lookback until changed or cancelled. LinearMotionSyntax Writes McLinear motion for linear commands (ISO G00/G01, Heidenhain L/LN). Detects motion mode from Flags, writes a one-shot MotionEvent section (form + isRapid) plus a modal MotionState section (Term) when MachineCoordinateState exists on the block. McLinearMotionSemantic discriminates between XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinateState. Must be placed after McAbcSyntax in the syntax chain. MachineCoordSelectSyntax Handles G53 (machine coordinate selection) — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, G53 is ignored per ISO standard. Must be placed before ProgramXyzSyntax in the syntax chain. When G53 is active, this syntax consumes X/Y/Z from Parsing and writes MachineCoordinateState directly, preventing ProgramXyzSyntax from processing them as program coordinates. McAbcCyclicPathSyntax Resolve modular rotary axes to the shortest cyclic path relative to the previous node. Uses IsModularRotary(string) to determine which axes within MachineCoordinateState need cyclic resolution. Falls back to hardcoded A/B/C if no IMachineAxisConfig is available. Must be placed after ProgramXyzSyntax in NcSyntaxList. Two stages, mirroring McXyzSyntax: Root MachineCoordinateState — anchored at the previous block's modal rotary state. CompoundMotion.ItemsKey[*] — sequential walk through items, anchoring item 0 at the previous block's modal state and item i > 0 at item i-1's post-cycle value (per-axis chain). Items without a rotary MachineCoordinateState are skipped. The items pass enables rotary motion (e.g. G28 ABC intermediate / home stages) to surface as motion IAct segments rather than a single root-MC stamp. McAbcSyntax Writes rotary axis values (A/B/C) into MachineCoordinateState from Parsing and modal lookback. Only active when IMachineAxisConfig declares rotary axes. Works for both 3+2-axis (no IMachineKinematics) and simultaneous 5-axis configurations. This syntax is intentionally ABC-only. When the block is rotary-only (no ProgramXyz, e.g. G00 A30.) the section is created with ABC but without X/Y/Z. McAbcXyzFallbackSyntax — placed after McXyzSyntax — copies X/Y/Z from the previous block's MachineCoordinateState to finish the section. Splitting the XYZ fill out lets this syntax run before McXyzSyntax (and before G43p4RtcpSyntax) without accidentally filling X/Y/Z from prev and thereby short-circuiting DeriveMcXyz(JsonObject, Mat4d). Missing rotary axes are filled from previous MachineCoordinateState lookback, unless the current section already has the value (e.g., from HomeMcInitializer). Values are stored in degrees (matching McAbcCyclicPathSyntax). Must be placed before McXyzSyntax so syntaxes that need the current-block ABC to compute transforms (e.g. G43p4RtcpSyntax) can see it; and before McAbcCyclicPathSyntax and LinearMotionSyntax. McAbcXyzFallbackSyntax Fills missing X/Y/Z on an ABC-only MachineCoordinateState section. Behaviour depends on whether the block is under RTCP with rotary motion, as indicated by HasDynamicEntry(JsonObject): Non-dynamic (no RTCP or RTCP with ABC stable) — the programmed tool tip stays put in MC while rotary axes (if any) are unchanged, so we simply copy X/Y/Z from the previous block's MachineCoordinateState. This matches NC modal XYZ carry-forward for rotary-only blocks such as G00 A30. (non-RTCP pivoting). Dynamic (RTCP active + ABC changing) — the programmed tool tip must stay fixed in program coordinates while MC XYZ shifts to compensate the new rotary state. Looks up the last ProgramXyz and re-derives MC = inheritedProgramXyz × composedTransform, where the composed transform is the block's endpoint chain (now including PivotTransformSource as a full rotation+translation Mat4d, so the chain already encodes the kinematic IK). The carried ProgramXyz is also stamped onto the current block so downstream consumers see a consistent ProgramXyz + MC pair. Pair with McAbcSyntax, which runs early to write ABC but deliberately leaves X/Y/Z empty so McXyzSyntax can still derive MC XYZ from ProgramXyz via the transform chain when the block carries linear motion. If McXyzSyntax has nothing to derive (no ProgramXyz), this syntax completes the MC section as described above. Does nothing when the section already carries all three of X/Y/Z (normal linear-motion blocks), or when there is no section at all (pure parse-only block that introduces no MC). Must be placed after McXyzSyntax and before McAbcCyclicPathSyntax / LinearMotionSyntax. McXyzSyntax Derives MachineCoordinateState from ProgramXyz by applying the composed ProgramToMcTransform. Processes two stages: Root ProgramXyz → root MachineCoordinate CompoundMotion.ItemsKey[*] — derives MachineCoordinate from ProgramXyz for items that have ProgramXyz but no MachineCoordinate Must be placed after syntaxes that write ProgramXyz (e.g., ReferenceReturnSyntax) and before syntaxes that read MachineCoordinate (e.g., LinearMotionSyntax). PeckDrillingCycleSyntax G83 peck drilling cycle. Supports modal repetition. Drills in increments of depth Q, fully retracting to R between strokes. Cycle sequence (per stroke): Rapid to init position (target XY, previous Z) Rapid from init to R-point For each stroke: rapid to clearance above previous depth, feed Q deeper, rapid back to R If remainder exists: feed to bottom Z, rapid to R Rapid from R/bottom to final (G98 → init Z, G99 → R) Retraction distance is read from ICannedCycleConfig (Fanuc #4002 / Syntec Pr4002, or FallbackConfig fallback). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. PivotTransformationSyntax Writes the PivotTransformSource entry into ProgramToMcTransform on every block, capturing the Pn→MC kinematic rigid transform for the block's endpoint rotary state. Mirrors legacy HardNcLine.GetProgramXyz's use of McToPn(DVec3d) — without this entry, the transform chain would miss the rotary rotation on any block whose MachineCoordinate.ABC is non-zero, and McXyzSyntax (and ProgramXyzSyntax's inverse lookback) would silently drift. Scope is not limited to RTCP modal: as long as rotary axes are physically at a non-zero position (e.g. after a non-RTCP G00 B90 plus any subsequent motion), the kinematic chain still contributes a non-identity rigid transform that must appear in the endpoint chain. G43p4RtcpSyntax is orthogonal and only governs the dynamic-rotary KindKey tagging used by LinearMotionSyntax to pick the motion form. Chain position: must run after all Pn-frame writers (IsoG68p2TiltSyntax, ToolHeightOffsetSyntax, G43p4RtcpSyntax, IsoCoordinateOffsetSyntax, brand-specific coord offset syntaxes) so the PivotTransform entry naturally lands as the last chain element. Must run before McXyzSyntax / ProgramXyzSyntax so they see the completed chain. Silently no-ops when IMachineKinematics is absent (3-axis configurations without rotary kinematics). PlaneSelectSyntax Consumes G17/G18/G19 plane selection from Flags and writes IPlaneSelectDef section using conventional axis-pair names (XY/ZX/YZ). Modal — persists via backward lookback. Default is XY (G17). Downstream consumers (CircularMotionSyntax, IsoG68RotationSyntax) call GetPlaneNormalDir(JsonObject) to read the resolved plane. PositioningSyntax Detects G90/G91 positioning mode from Flags (or by modal lookback) and writes a Positioning section (Term, Mode) to the block JSON. Fanuc/ISO: reads G90/G91 from Flags (global modal). Heidenhain: would need a separate implementation reading I-prefix per axis. Siemens: would extend with AC()/IC() per-axis override. Does NOT convert incremental values — that is handled by IncrementalResolveSyntax which can be placed later in the syntax chain, after canned cycle syntaxes have consumed their parameters with cycle-specific G91 semantics. ProgramEndCleanSyntax Clears the per-block Vars.Volatile dictionary on blocks that triggered program end (M02 / M30, identified by the ProgramEnd section written by ProgramEndSyntax). Real Fanuc clears non-retained common variables (#100-#499) on program end + reset; this syntax models that behaviour at the simulator level. The clear happens on the same block that carried M02/M30 — the next block's VolatileVariableReadingSyntax carry then sees an empty dictionary on the predecessor and starts fresh. Pipeline placement: must run after both ProgramEndSyntax (which writes the ProgramEnd section this syntax checks) and VolatileVariableReadingSyntax (so the carry has already happened on this block; this syntax overwrites the result). Retained common variables (#500-#999, owned by RetainedCommonVariableTable) are untouched — they survive program end on real hardware (NV-RAM). Local variables (#1-#33, scope: macro call frame) are also untouched here; their lifecycle belongs to G65/G66/M99 push/pop, not program end. Also clears any active FanucModalMacro on the same edge: a G66 modal that was still active when M02/M30 hit is implicitly cancelled, matching real Fanuc reset behaviour. The section is overwritten with a G67-shaped cancel marker so the carry mechanism in FanucModalMacroSyntax sees the boundary and does not propagate the modal past the program-end edge. ProgramEndSyntax Consumes M02/M30 (program end) from Flags and writes IProgramEndDef section. Downstream syntaxes that need to reset modal state on program end (e.g. IsoLocalCoordinateOffsetSyntax for G52 reset) should read the ProgramEnd section rather than scanning for M30 in Flags directly. Must be placed before syntaxes that depend on the ProgramEnd section. ProgramStopSyntax Consumes M00 (unconditional stop) and M01 (optional stop) from Flags and writes a IProgramStopDef section on the block that carried the flag. Non-modal: the section is written only on the exact block where the stop code appears. Siblings with ProgramEndSyntax (M02/M30) which handles end-of-program, not in-program stops. The parsing layer only records NC intent. Whether M01 actually pauses the run is a runtime/semantic decision gated by the operator's \"Optional Stop\" switch (analogous to IBlockSkipConfig for block skip). ProgramXyzSyntax Resolves ProgramXyz (leaf coordinate) from syntax XYZ tags. Writes ProgramXyz sub-object to SyntaxPiece.JsonObject. Must be placed after BundleSyntax since it uses cross-node lookback for last position. McXyzSyntax (placed after this in the chain) reads ProgramXyz and writes MachineCoordinateState. ProgramXyzUtil Shared utilities for ProgramXyz and MachineCoordinateState lookback and resolution. Used by ProgramXyzSyntax, ReferenceReturnSyntax, and semantic resolvers that need position lookback. Two strategies for \"what's the program coordinate at a block's endpoint?\" — both invert an MC value through an ProgramToMcTransform chain, but they pick the chain from different nodes: By current-state transform (ComputeProgramXyzByCurrentTransform(LazyLinkedListNode, Vec3d)) — modal anchor is MachineCoordinateState. Re-expresses an MC value (typically a predecessor's modal MC) into the current block's program frame using the current block's chain. Suitable for chain-change blocks where the spindle physically stays put while the chain (G54 swap, G68.2 activation, G43.4 toggle, tool-height change, ...) re-anchors the program frame; mirrors legacy HardNcLine.RebuildProgramXyzByMc. By corresponding-state transform (ComputeProgramXyzByCorrespondingTransform(LazyLinkedListNode)) — modal anchor is ProgramXyz. Recovers the program coordinate that nodeCarryingMc was originally commanded at, by inverting that same node's own transform on its own MC. Suitable for RTCP rotary-dynamic inheritance, where the modal invariant is \"tool tip in workpiece frame stays put while rotary axes turn\" — the recovered Vec3d carries forward as the next rotary block's modal ProgramXyz unchanged, regardless of how its PivotTransform differs. Both strategies yield the same Vec3d when prev and current share the same chain modal state; they only diverge across chain boundaries (RTCP toggle, coord-system swap, tilt activation) and at rotary motion (PivotTransform difference). Pick the wrong one and the result lands in a stale frame: Non-RTCP using \"corresponding\" — leaves the pre-chain-change values, so a block emitted right after G43.4 H03 would inherit ProgramXyz still in the G49 frame and the next motion's MC.Z drifts by the introduced tool-height offset. (This was the 2026-04-25 SoftNc / HardNc divergence on DemoPmcAirPlane/NC/02-ED6L20.NC.) RTCP using \"current\" — double-counts the rotary PivotTransform difference, so the inherited workpiece anchor rotates by the C delta on every rotary block. Direct callers of the two strategy helpers are rare — typically you call the dispatcher ResolveBlockProgramXyz(LazyLinkedListNode, Vec3d) (block's own MC vs predecessor lookback, picks strategy from HasDynamicEntry(JsonObject)) or GetLastProgramXyz(LazyLinkedListNode) (pure predecessor lookback). ReferenceReturnSyntax RotaryAxisUtil Shared utilities for rotary axis (A/B/C) resolution. Used by G53p1RotaryPositionSyntax, McAbcSyntax, IsoG68p2TiltSyntax, and other syntaxes that read or write rotary axis values. SpindleSpeedSyntax Consumes S (spindle speed) and M03/M04/M05 (spindle direction) from Parsing. Both are modal — persist across blocks via backward node lookback. Writes resolved state to a ISpindleSpeedDef section. Direction is converted from ISO M-codes to the conventional SpindleDirection enum at this layer. TappingCycleSyntax G84 (right-hand) / G74 (left-hand) tapping cycles. Supports modal repetition. Cycle sequence: Rapid to init position (target XY, previous Z) Rapid from init to R-point Feed from R-point to bottom Z Spindle reverse at bottom Feed retract to final Z (G98 → init Z, G99 → R) Spindle restore to forward direction G84: forward = CW (M03), reverse = CCW (M04). G74: forward = CCW (M04), reverse = CW (M03). Reads absolute coordinates from the cycle section, which is resolved by CannedCycleResolveSyntax (modal repetition, G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain. TiltTransformUtil Shared utilities for all tilt transform syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and ProgramToMcTransform composition. ToolChangeSyntax Consumes T (tool number) and M06 (tool change) from Parsing. T is modal — persists across blocks. M06 triggers the change. Writes resolved state to a ToolChange section: { “ToolId”: 1, “IsChange”: true, “Term”: “M06” }. TermKey records the trigger command and is only written when IsChangeKey is true (i.e. the block actually carried the tool-change M code); modal-only blocks omit it. ToolHeightOffsetSyntax Resolves ISO tool height offset (G43/G44/G49) to the effective offset value (mm) and composes the offset as a translation into the accumulated ProgramToMcTransform matrix. RTCP modes (G43.4, TRAORI, M128) are handled by separate brand-specific syntaxes (e.g., G43p4RtcpSyntax). UnitModeSyntax Detects the unit-system code (ISO Group 06: G20 inch / G21 metric) from Flags and writes a Unit section (Term, System). Modal — absence of an explicit flag inherits the previous block's unit, defaulting to Metric at program start. The HiNC pipeline works exclusively in millimetres. When G20 is detected this syntax emits an Unit--InchNotSupported Unsupported Error so upstream callers are forced to pre-convert the NC program to metric. G21 is accepted as a no-op confirmation of the default. Enums BareG28Behavior Writes ICompoundMotionDef section for G28 reference point return. Reads intermediate XYZ from Parsing.G28 (written by G28Syntax) and converts to machine coordinates via ResolveProgramXyz(JsonNode, LazyLinkedListNode, ISentenceCarrier, NcDiagnosticProgress). Must be placed after LinearMotionSyntax in the syntax chain. Removes the IMotionEventDef section written by LinearMotionSyntax (G28 handles its own motion). Overwrites root MachineCoordinateState and ProgramXyz with reference position for subsequent block lookback." }, "api/Hi.NcParsers.NcDiagnostic.html": { "href": "api/Hi.NcParsers.NcDiagnostic.html", "title": "Class NcDiagnostic | HiAPI-C# 2025", - "summary": "Class NcDiagnostic Namespace Hi.NcParsers Assembly HiMech.dll A structured diagnostic from the SoftNcRunner pipeline, designed for IProgress consumption. Id is composed as {Primary}-{Secondary}--{Abbrev} (e.g., Cycle-Peck--BadPeckQ, Syntax-Build--Exception). For irregular cases that don't fit the pattern, use a custom string. public class NcDiagnostic Inheritance object NcDiagnostic Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, Sentence) Creates a fully-populated NcDiagnostic. public NcDiagnostic(NcDiagnosticSeverity severity, NcDiagnosticCategory category, string id, string text, object detail = null, Sentence sentence = null) Parameters severity NcDiagnosticSeverity Importance level — see NcDiagnosticSeverity. category NcDiagnosticCategory Diagnostic category — see NcDiagnosticCategory. id string Structured diagnostic ID (see Id). text string End-user friendly message text. detail object Optional detail data or exception. Null if not applicable. sentence Sentence The NC source block that triggered this diagnostic; null for pipeline-level messages. Properties Category Diagnostic category. public NcDiagnosticCategory Category { get; } Property Value NcDiagnosticCategory Detail Optional detail data or exception. Null if not applicable. public object Detail { get; } Property Value object Id Structured diagnostic ID for filtering and suppression. Normally {Primary}-{Secondary}–{Serial:000}. public string Id { get; } Property Value string Sentence The NC source block that triggered this diagnostic. Null for pipeline-level messages (e.g., lifecycle start/done). public Sentence Sentence { get; } Property Value Sentence Severity Importance level. public NcDiagnosticSeverity Severity { get; } Property Value NcDiagnosticSeverity Text End-user friendly message text. public string Text { get; } Property Value string Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class NcDiagnostic Namespace Hi.NcParsers Assembly HiMech.dll A structured diagnostic from the SoftNcRunner pipeline, designed for IProgress consumption. Id is composed as {Primary}-{Secondary}--{Abbrev} (e.g., Cycle-Peck--BadPeckQ, Syntax-Build--Exception). For irregular cases that don't fit the pattern, use a custom string. public class NcDiagnostic Inheritance object NcDiagnostic Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, ISentenceCarrier) Creates a fully-populated NcDiagnostic. public NcDiagnostic(NcDiagnosticSeverity severity, NcDiagnosticCategory category, string id, string text, object detail = null, ISentenceCarrier sentenceCarrier = null) Parameters severity NcDiagnosticSeverity Importance level — see NcDiagnosticSeverity. category NcDiagnosticCategory Diagnostic category — see NcDiagnosticCategory. id string Structured diagnostic ID (see Id). text string End-user friendly message text. detail object Optional detail data or exception. Null if not applicable. sentenceCarrier ISentenceCarrier Carrier for the NC source block that triggered this diagnostic; null for pipeline-level messages. Properties Category Diagnostic category. public NcDiagnosticCategory Category { get; } Property Value NcDiagnosticCategory Detail Optional detail data or exception. Null if not applicable. public object Detail { get; } Property Value object Id Structured diagnostic ID for filtering and suppression. Normally {Primary}-{Secondary}–{Serial:000}. public string Id { get; } Property Value string SentenceCarrier Carrier of the NC source block that triggered this diagnostic, exposing both the source Sentence (via GetSentence()) and the execution-order SentenceIndex. Null for pipeline-level messages (e.g., lifecycle start/done) that have no source block. public ISentenceCarrier SentenceCarrier { get; } Property Value ISentenceCarrier Severity Importance level. public NcDiagnosticSeverity Severity { get; } Property Value NcDiagnosticSeverity Text End-user friendly message text. public string Text { get; } Property Value string Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.NcParsers.NcDiagnosticCategory.html": { "href": "api/Hi.NcParsers.NcDiagnosticCategory.html", @@ -4497,7 +4622,7 @@ "api/Hi.NcParsers.NcDiagnosticProgress.html": { "href": "api/Hi.NcParsers.NcDiagnosticProgress.html", "title": "Class NcDiagnosticProgress | HiAPI-C# 2025", - "summary": "Class NcDiagnosticProgress Namespace Hi.NcParsers Assembly HiMech.dll Helper that emits NcDiagnostic records via an IProgress sink. Provides one method per (NcDiagnosticCategory, NcDiagnosticSeverity) pair, each with an optional Sentence overload locating the issue in the NC source. public class NcDiagnosticProgress : IProgress Inheritance object NcDiagnosticProgress Implements IProgress Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcDiagnosticProgress(IProgress) Creates a NcDiagnosticProgress that forwards every reported NcDiagnostic to progress. public NcDiagnosticProgress(IProgress progress) Parameters progress IProgress Sink that receives each diagnostic as object. Methods ConfigurationError(Sentence, string, string, object) Emits Configuration + Error located at sentence. public void ConfigurationError(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object ConfigurationError(string, string, object) Emits Configuration + Error (dependency/config missing, cannot proceed). public void ConfigurationError(string id, string text, object detail = null) Parameters id string text string detail object ConfigurationMessage(Sentence, string, string) Emits Configuration + Message located at sentence. public void ConfigurationMessage(Sentence sentence, string id, string text) Parameters sentence Sentence id string text string ConfigurationMessage(string, string) Emits Configuration + Message (dependency/config applied, informational event). public void ConfigurationMessage(string id, string text) Parameters id string text string ConfigurationWarning(Sentence, string, string, object) Emits Configuration + Warning located at sentence. public void ConfigurationWarning(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object ConfigurationWarning(string, string, object) Emits Configuration + Warning (dependency/config missing, using fallback). public void ConfigurationWarning(string id, string text, object detail = null) Parameters id string text string detail object Report(NcDiagnostic) Reports a progress update. public void Report(NcDiagnostic value) Parameters value NcDiagnostic The value of the updated progress. SystemError(Sentence, string, string, object) Emits System + Error located at sentence. public void SystemError(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object SystemError(string, string, object) Emits System + Error (pipeline exception or unconsidered case). public void SystemError(string id, string text, object detail = null) Parameters id string text string detail object SystemMessage(Sentence, string, string) Emits System + Message located at sentence. public void SystemMessage(Sentence sentence, string id, string text) Parameters sentence Sentence id string text string SystemMessage(string, string) Emits System + Message (pipeline lifecycle / informational). public void SystemMessage(string id, string text) Parameters id string text string UnsupportedError(Sentence, string, string, object) Emits Unsupported + Error located at sentence. public void UnsupportedError(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object UnsupportedError(string, string, object) Emits Unsupported + Error (recognized but unimplemented, likely matters). public void UnsupportedError(string id, string text, object detail = null) Parameters id string text string detail object UnsupportedMessage(Sentence, string, string, object) Emits Unsupported + Message located at sentence. public void UnsupportedMessage(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object UnsupportedMessage(string, string, object) Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline). public void UnsupportedMessage(string id, string text, object detail = null) Parameters id string text string detail object UnsupportedWarning(Sentence, string, string, object) Emits Unsupported + Warning located at sentence. public void UnsupportedWarning(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object UnsupportedWarning(string, string, object) Emits Unsupported + Warning (recognized but unimplemented, likely harmless). public void UnsupportedWarning(string id, string text, object detail = null) Parameters id string text string detail object ValidationError(Sentence, string, string, object) Emits Validation + Error located at sentence. public void ValidationError(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object ValidationError(string, string, object) Emits Validation + Error (manufacturing/physics is unfeasible). public void ValidationError(string id, string text, object detail = null) Parameters id string text string detail object ValidationWarning(Sentence, string, string, object) Emits Validation + Warning located at sentence. public void ValidationWarning(Sentence sentence, string id, string text, object detail = null) Parameters sentence Sentence id string text string detail object ValidationWarning(string, string, object) Emits Validation + Warning (manufacturing/physics may be unfeasible). public void ValidationWarning(string id, string text, object detail = null) Parameters id string text string detail object" + "summary": "Class NcDiagnosticProgress Namespace Hi.NcParsers Assembly HiMech.dll Helper that emits NcDiagnostic records via an IProgress sink. Provides one method per (NcDiagnosticCategory, NcDiagnosticSeverity) pair, each with an optional Sentence overload locating the issue in the NC source. public class NcDiagnosticProgress : IProgress Inheritance object NcDiagnosticProgress Implements IProgress Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors NcDiagnosticProgress(IProgress) Creates a NcDiagnosticProgress that forwards every reported NcDiagnostic to progress. public NcDiagnosticProgress(IProgress progress) Parameters progress IProgress Sink that receives each diagnostic as object. Methods ConfigurationError(ISentenceCarrier, string, string, object) Emits Configuration + Error located at sentenceCarrier. public void ConfigurationError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object ConfigurationError(string, string, object) Emits Configuration + Error (dependency/config missing, cannot proceed). public void ConfigurationError(string id, string text, object detail = null) Parameters id string text string detail object ConfigurationMessage(ISentenceCarrier, string, string) Emits Configuration + Message located at sentenceCarrier. public void ConfigurationMessage(ISentenceCarrier sentenceCarrier, string id, string text) Parameters sentenceCarrier ISentenceCarrier id string text string ConfigurationMessage(string, string) Emits Configuration + Message (dependency/config applied, informational event). public void ConfigurationMessage(string id, string text) Parameters id string text string ConfigurationWarning(ISentenceCarrier, string, string, object) Emits Configuration + Warning located at sentenceCarrier. public void ConfigurationWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object ConfigurationWarning(string, string, object) Emits Configuration + Warning (dependency/config missing, using fallback). public void ConfigurationWarning(string id, string text, object detail = null) Parameters id string text string detail object Report(NcDiagnostic) Reports a progress update. public void Report(NcDiagnostic value) Parameters value NcDiagnostic The value of the updated progress. SystemError(ISentenceCarrier, string, string, object) Emits System + Error located at sentenceCarrier. public void SystemError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object SystemError(string, string, object) Emits System + Error (pipeline exception or unconsidered case). public void SystemError(string id, string text, object detail = null) Parameters id string text string detail object SystemMessage(ISentenceCarrier, string, string) Emits System + Message located at sentenceCarrier. public void SystemMessage(ISentenceCarrier sentenceCarrier, string id, string text) Parameters sentenceCarrier ISentenceCarrier id string text string SystemMessage(string, string) Emits System + Message (pipeline lifecycle / informational). public void SystemMessage(string id, string text) Parameters id string text string UnsupportedError(ISentenceCarrier, string, string, object) Emits Unsupported + Error located at sentenceCarrier. public void UnsupportedError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object UnsupportedError(string, string, object) Emits Unsupported + Error (recognized but unimplemented, likely matters). public void UnsupportedError(string id, string text, object detail = null) Parameters id string text string detail object UnsupportedMessage(ISentenceCarrier, string, string, object) Emits Unsupported + Message located at sentenceCarrier. public void UnsupportedMessage(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object UnsupportedMessage(string, string, object) Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline). public void UnsupportedMessage(string id, string text, object detail = null) Parameters id string text string detail object UnsupportedWarning(ISentenceCarrier, string, string, object) Emits Unsupported + Warning located at sentenceCarrier. public void UnsupportedWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object UnsupportedWarning(string, string, object) Emits Unsupported + Warning (recognized but unimplemented, likely harmless). public void UnsupportedWarning(string id, string text, object detail = null) Parameters id string text string detail object ValidationError(ISentenceCarrier, string, string, object) Emits Validation + Error located at sentenceCarrier. public void ValidationError(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object ValidationError(string, string, object) Emits Validation + Error (manufacturing/physics is unfeasible). public void ValidationError(string id, string text, object detail = null) Parameters id string text string detail object ValidationWarning(ISentenceCarrier, string, string, object) Emits Validation + Warning located at sentenceCarrier. public void ValidationWarning(ISentenceCarrier sentenceCarrier, string id, string text, object detail = null) Parameters sentenceCarrier ISentenceCarrier id string text string detail object ValidationWarning(string, string, object) Emits Validation + Warning (manufacturing/physics may be unfeasible). public void ValidationWarning(string id, string text, object detail = null) Parameters id string text string detail object" }, "api/Hi.NcParsers.NcDiagnosticSeverity.html": { "href": "api/Hi.NcParsers.NcDiagnosticSeverity.html", @@ -4507,17 +4632,17 @@ "api/Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html", "title": "Class BlockSkipSyntax | HiAPI-C# 2025", - "summary": "Class BlockSkipSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Parses the ISO 6983 / Fanuc Block Delete (a.k.a. Block Skip) prefix / or /N (N = 1..9) at the head of an NC block. Behaviour: No leading / → no-op, no BlockSkip section is written. / with IBlockSkipConfig layer OFF (or the dependency absent) → prefix is consumed, BlockSkip Symbol/Layer recorded for audit, Body stays null; the rest of the block stays in UnparsedText and parses normally. / with layer ON → the remaining block text is moved from UnparsedText into Body and UnparsedText is cleared. Downstream parsing syntaxes see no NC text so they emit nothing; semantics therefore produce no act. Must run after comment / CsScript syntaxes so that comments (and CsScript embedded in comments) continue to take effect regardless of the skip switch. public class BlockSkipSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BlockSkipSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BlockSkipSyntax() Initializes a new instance with default settings. public BlockSkipSyntax() BlockSkipSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public BlockSkipSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class BlockSkipSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Parses the ISO 6983 / Fanuc Block Delete (a.k.a. Block Skip) prefix / or /N (N = 1..9) at the head of an NC block. Behaviour: No leading / → no-op, no BlockSkip section is written. / with IBlockSkipConfig layer OFF (or the dependency absent) → prefix is consumed, BlockSkip Symbol/Layer recorded for audit, Body stays null; the rest of the block stays in UnparsedText and parses normally. / with layer ON → the remaining block text is moved from UnparsedText into Body and UnparsedText is cleared. Downstream parsing syntaxes see no NC text so they emit nothing; semantics therefore produce no act. Must run after comment / CsScript syntaxes so that comments (and CsScript embedded in comments) continue to take effect regardless of the skip switch. public class BlockSkipSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BlockSkipSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: /X100 Y200 #AfterBuild: { \"UnparsedText\": \"X100 Y200\", \"BlockSkip\": { \"Symbol\": \"/\", \"Layer\": 1 } } #BeforeBuild.UnparsedText: /3 G01 X0 #AfterBuild: { \"UnparsedText\": \"G01 X0\", \"BlockSkip\": { \"Symbol\": \"/\", \"Layer\": 3 } } Constructors BlockSkipSyntax() Initializes a new instance with default settings. public BlockSkipSyntax() BlockSkipSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public BlockSkipSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.QuoteCommentSyntax.html", "title": "Class QuoteCommentSyntax | HiAPI-C# 2025", - "summary": "Class QuoteCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll Parses parenthesized comments such as (comment text) from the remaining unparsed text and emits a Comment section with the () symbol. public class QuoteCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object QuoteCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors QuoteCommentSyntax() Initializes a new instance with default settings. public QuoteCommentSyntax() QuoteCommentSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public QuoteCommentSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class QuoteCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll Parses parenthesized comments such as (comment text) from the remaining unparsed text and emits a Comment section with the () symbol. public class QuoteCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object QuoteCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: (only a comment) #AfterBuild: { \"Comment\": { \"Symbol\": \"()\", \"Text\": \"only a comment\" } } #BeforeBuild.UnparsedText: G01 X100 (mid-line comment) #AfterBuild: { \"UnparsedText\": \"G01 X100\", \"Comment\": { \"Symbol\": \"()\", \"Text\": \"mid-line comment\" } } Constructors QuoteCommentSyntax() Initializes a new instance with default settings. public QuoteCommentSyntax() QuoteCommentSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public QuoteCommentSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.TailCommentSyntax.html", "title": "Class TailCommentSyntax | HiAPI-C# 2025", - "summary": "Class TailCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll In-situ syntax that strips a trailing comment from the NC line: text from a configured TailSymbol to end-of-line is moved into Comment on the block JSON. public class TailCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TailCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TailCommentSyntax(string) Creates syntax with the given tail marker; used from code or tests without XML. public TailCommentSyntax(string tailSymbol) Parameters tailSymbol string Marker that starts the tail comment segment. TailCommentSyntax(XElement) Loads TailSymbol from persisted XML. public TailCommentSyntax(XElement src) Parameters src XElement Serialized syntax element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string TailSymbol First character(s) of the tail comment marker (e.g. ; or //). public string TailSymbol { get; set; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class TailCommentSyntax Namespace Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs Assembly HiMech.dll In-situ syntax that strips a trailing comment from the NC line: text from a configured TailSymbol to end-of-line is moved into Comment on the block JSON. public class TailCommentSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TailCommentSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: ;header comment (with TailSymbol=\";\") #AfterBuild: { \"Comment\": { \"Symbol\": \";\", \"Text\": \"header comment\" } } #BeforeBuild.UnparsedText: G01 X100 ;mid comment (with TailSymbol=\";\") #AfterBuild: { \"UnparsedText\": \"G01 X100\", \"Comment\": { \"Symbol\": \";\", \"Text\": \"mid comment\" } } Constructors TailCommentSyntax(string) Creates syntax with the given tail marker; used from code or tests without XML. public TailCommentSyntax(string tailSymbol) Parameters tailSymbol string Marker that starts the tail comment segment. TailCommentSyntax(XElement) Loads TailSymbol from persisted XML. public TailCommentSyntax(XElement src) Parameters src XElement Serialized syntax element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string TailSymbol First character(s) of the tail comment marker (e.g. ; or //). public string TailSymbol { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html", @@ -4527,17 +4652,32 @@ "api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.html", "title": "Class CsScriptSyntax | HiAPI-C# 2025", - "summary": "Class CsScriptSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Extracts C# script markers from the oral content of a comment. PreMarker marks a script that runs before the NC block; PostMarker marks a script that runs after. The symbols are configurable and serialized to XML. public class CsScriptSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CsScriptSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsScriptSyntax() Creates syntax with DefaultPreMarker and DefaultPostMarker. public CsScriptSyntax() CsScriptSyntax(XElement) Loads pre/post script markers from persisted XML. public CsScriptSyntax(XElement src) Parameters src XElement Root element named XName. Fields DefaultPostMarker Default end-of-block script delimiter when none is configured in XML. public const string DefaultPostMarker = \"@@^\" Field Value string DefaultPreMarker Default begin-of-block script delimiter when none is configured in XML. public const string DefaultPreMarker = \"@@\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string PostMarker Marker prefix for end-of-block script (runs after the NC block). public string PostMarker { get; set; } Property Value string PreMarker Marker prefix for begin-of-block script (runs before the NC block). public string PreMarker { get; set; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class CsScriptSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Extracts C# script markers from the oral content of a comment. PreMarker marks a script that runs before the NC block; PostMarker marks a script that runs after. The symbols are configurable and serialized to XML. public class CsScriptSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object CsScriptSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsScriptSyntax() Creates syntax with DefaultPreMarker and DefaultPostMarker. public CsScriptSyntax() CsScriptSyntax(XElement) Loads pre/post script markers from persisted XML. public CsScriptSyntax(XElement src) Parameters src XElement Root element named XName. Fields DefaultPostMarker Default end-of-block script delimiter when none is configured in XML. public const string DefaultPostMarker = \"@@^\" Field Value string DefaultPreMarker Default begin-of-block script delimiter when none is configured in XML. public const string DefaultPreMarker = \"@@\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string PostMarker Marker prefix for end-of-block script (runs after the NC block). public string PostMarker { get; set; } Property Value string PreMarker Marker prefix for begin-of-block script (runs before the NC block). public string PreMarker { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, - "api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html": { - "href": "api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html", + "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html": { + "href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html", + "title": "Class FanucGotoParsingSyntax | HiAPI-C# 2025", + "summary": "Class FanucGotoParsingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Assembly HiMech.dll Parses Fanuc Custom Macro B GOTO phrases out of the remaining UnparsedText into a Parsing.FanucGoto sub-object. Two forms are recognised: GOTO — unconditional jump. IF [] GOTO — conditional jump. IF [...] GOTO is matched as a single phrase, not as an IF syntax composed with a GOTO syntax — Fanuc only permits the two fixed forms (the other being IF [...] THEN , out of scope here), so a phrase-level parser is more faithful and avoids parsing-ambiguity rabbit holes. is captured as a raw token (literal like \"100\", variable like \"#1\", or bracketed expression like \"#[#2+5]\"). VariableEvaluatorSyntax substitutes the resolved literal back into the same field downstream; FanucGotoSyntax then parses the final string as an int. Storing as a string at parsing time mirrors how axis tags and canned-cycle params accept #N references and the evaluator rewrites them in place. Pipeline placement: after HeadIndexSyntax (so the leading N{seq} on a block like N50 GOTO 100 has already been consumed) and after QuoteCommentSyntax (so a parenthesised (GOTO 100) inside a comment never matches). The phrase consumes the entire remaining text on the block — Fanuc allows only the GOTO / IF-GOTO phrase after any preceding head index, no other instructions on the same block. public class FanucGotoParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucGotoParsingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: GOTO 100 #AfterBuild: { \"Parsing\": { \"FanucGoto\": { \"Term\": \"GOTO\", \"N\": \"100\" } } } #BeforeBuild.UnparsedText: GOTO #1 #AfterBuild: { \"Parsing\": { \"FanucGoto\": { \"Term\": \"GOTO\", \"N\": \"#1\" } } } #BeforeBuild.UnparsedText: IF [#1 GT 0] GOTO 100 #AfterBuild: { \"Parsing\": { \"FanucGoto\": { \"Term\": \"IF...GOTO\", \"N\": \"100\", \"Condition\": \"#1 GT 0\" } } } Constructors FanucGotoParsingSyntax() Parameterless instance for bundle composition (no XML state). public FanucGotoParsingSyntax() FanucGotoParsingSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucGotoParsingSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html": { + "href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html", + "title": "Class FanucIfThenParsingSyntax | HiAPI-C# 2025", + "summary": "Class FanucIfThenParsingSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Assembly HiMech.dll Parses the Fanuc Custom Macro B IF [] THEN single-block conditional phrase out of UnparsedText into a Parsing.FanucIfThen sub-object. Sibling to FanucGotoParsingSyntax — Fanuc spec only permits two IF-led control phrases (IF [...] GOTO handled there, IF [...] THEN handled here) so each form is matched phrase-level rather than composed from a generic IF combinator. Body shape. The body after THEN is conceptually a single statement that affects the current block only — no jump, no label scan. Almost always a Custom Macro B assignment (#nnn = ); multiple assignments in the same body (#100 = 5. #101 = #100 + 1) are also accepted. The parsing syntax pre-extracts these via GrabTagAssignment(ref string, IEnumerable, string, IEnumerable) into Parsing.FanucIfThen.PendingAssignments as {tag: rhs-string} entries — that shape lets VariableEvaluatorSyntax's pass-2 tree walk substitute each RHS to a numeric in place, and lets FanucIfThenSyntax lift the resolved entries into Parsing.Assignments only when the gate condition fires (so unfired bodies leave no trace in the readers). Pipeline placement. This syntax must run before FanucGotoParsingSyntax — the bare IF-GOTO regex over there (^IF[..]GOTO n$) is anchored, but consuming IF-THEN here first keeps the two phrases textually disjoint and avoids any future regression if either regex is loosened. Also placed before TagAssignmentSyntax so a bare IF [...] THEN #100 = 5. is not first half-eaten as a plain assignment. Raw BodyText is retained verbatim on the parsing section regardless of whether the body parsed as assignments — it carries the round-trip view and lets the evaluation syntax warn (FanucIfThen--UnsupportedBody) if no PendingAssignments were produced on a truthy condition. public class FanucIfThenParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucIfThenParsingSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #Input: IF [#1 GT 0] THEN #100 = #500 + 1 #Output: { \"Parsing\": { \"FanucIfThen\": { \"Condition\": \"#1 GT 0\", \"BodyText\": \"#100 = #500 + 1\", \"PendingAssignments\": { \"#100\": \"#500 + 1\" } } } } Constructors FanucIfThenParsingSyntax() Parameterless instance for bundle composition (no XML state). public FanucIfThenParsingSyntax() FanucIfThenParsingSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucIfThenParsingSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html": { + "href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html", "title": "Class FanucProgramNumberSyntax | HiAPI-C# 2025", - "summary": "Class FanucProgramNumberSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Detects a Fanuc-family program identifier header — O1234 or — that follows a TapeBoundary line, and records it under FanucProgramNumber on the block JSON. The wrapping form (bare vs angle-bracketed) is preserved in Wrapper so the block can be emitted back to its original notation. public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucProgramNumberSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FanucProgramNumberSyntax() Parameterless instance for bundle composition (no XML state). public FanucProgramNumberSyntax() FanucProgramNumberSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucProgramNumberSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FanucProgramNumberSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Assembly HiMech.dll Detects a Fanuc-family program identifier header — O1234 or — that follows a TapeBoundary line, and records it under FanucProgramNumber on the block JSON. The wrapping form (bare vs angle-bracketed) is preserved in Wrapper so the block can be emitted back to its original notation. public class FanucProgramNumberSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucProgramNumberSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Bare O1234 on the first block of the stream (no #Previous:) — start-of-stream is itself a tape boundary per IsPreviousNodeTapeBoundary(LazyLinkedListNode), so the syntax fires; the consumed text leaves nothing behind: #BeforeBuild.UnparsedText: O1234 #AfterBuild: { \"FanucProgramNumber\": { \"Number\": \"1234\", \"Wrapper\": \"None\" } } Angle-bracketed after an explicit TapeBoundary block (% on the prior line) — Wrapper records the surface form: #Previous: { \"TapeBoundary\": { \"Text\": \"\" } } #BeforeBuild.UnparsedText: #AfterBuild: { \"FanucProgramNumber\": { \"Number\": \"5678\", \"Wrapper\": \"Angle\" } } O1234 followed by trailing text (e.g. an inline comment) — only the program-number header is consumed; the rest stays on UnparsedText for downstream syntaxes to handle: #Previous: { \"TapeBoundary\": { \"Text\": \"\" } } #BeforeBuild.UnparsedText: O1234 (PART-A) #AfterBuild: { \"UnparsedText\": \"(PART-A)\", \"FanucProgramNumber\": { \"Number\": \"1234\", \"Wrapper\": \"None\" } } Previous block is not a tape boundary (e.g. ordinary FanucProgramNumber already in the stream) — the guard rejects the block, leaving UnparsedText intact: #Previous: { \"FanucProgramNumber\": { \"Number\": \"1000\", \"Wrapper\": \"None\" } } #BeforeBuild.UnparsedText: O9999 #AfterBuild: { \"UnparsedText\": \"O9999\" } Constructors FanucProgramNumberSyntax() Parameterless instance for bundle composition (no XML state). public FanucProgramNumberSyntax() FanucProgramNumberSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucProgramNumberSyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + }, + "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html": { + "href": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html", + "title": "Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc | HiAPI-C# 2025", + "summary": "Namespace Hi.NcParsers.ParsingSyntaxs.Fanuc Classes FanucGotoParsingSyntax Parses Fanuc Custom Macro B GOTO phrases out of the remaining UnparsedText into a Parsing.FanucGoto sub-object. Two forms are recognised: GOTO — unconditional jump. IF [] GOTO — conditional jump. IF [...] GOTO is matched as a single phrase, not as an IF syntax composed with a GOTO syntax — Fanuc only permits the two fixed forms (the other being IF [...] THEN , out of scope here), so a phrase-level parser is more faithful and avoids parsing-ambiguity rabbit holes. is captured as a raw token (literal like \"100\", variable like \"#1\", or bracketed expression like \"#[#2+5]\"). VariableEvaluatorSyntax substitutes the resolved literal back into the same field downstream; FanucGotoSyntax then parses the final string as an int. Storing as a string at parsing time mirrors how axis tags and canned-cycle params accept #N references and the evaluator rewrites them in place. Pipeline placement: after HeadIndexSyntax (so the leading N{seq} on a block like N50 GOTO 100 has already been consumed) and after QuoteCommentSyntax (so a parenthesised (GOTO 100) inside a comment never matches). The phrase consumes the entire remaining text on the block — Fanuc allows only the GOTO / IF-GOTO phrase after any preceding head index, no other instructions on the same block. FanucIfThenParsingSyntax Parses the Fanuc Custom Macro B IF [] THEN single-block conditional phrase out of UnparsedText into a Parsing.FanucIfThen sub-object. Sibling to FanucGotoParsingSyntax — Fanuc spec only permits two IF-led control phrases (IF [...] GOTO handled there, IF [...] THEN handled here) so each form is matched phrase-level rather than composed from a generic IF combinator. Body shape. The body after THEN is conceptually a single statement that affects the current block only — no jump, no label scan. Almost always a Custom Macro B assignment (#nnn = ); multiple assignments in the same body (#100 = 5. #101 = #100 + 1) are also accepted. The parsing syntax pre-extracts these via GrabTagAssignment(ref string, IEnumerable, string, IEnumerable) into Parsing.FanucIfThen.PendingAssignments as {tag: rhs-string} entries — that shape lets VariableEvaluatorSyntax's pass-2 tree walk substitute each RHS to a numeric in place, and lets FanucIfThenSyntax lift the resolved entries into Parsing.Assignments only when the gate condition fires (so unfired bodies leave no trace in the readers). Pipeline placement. This syntax must run before FanucGotoParsingSyntax — the bare IF-GOTO regex over there (^IF[..]GOTO n$) is anchored, but consuming IF-THEN here first keeps the two phrases textually disjoint and avoids any future regression if either regex is loosened. Also placed before TagAssignmentSyntax so a bare IF [...] THEN #100 = 5. is not first half-eaten as a plain assignment. Raw BodyText is retained verbatim on the parsing section regardless of whether the body parsed as assignments — it carries the round-trip view and lets the evaluation syntax warn (FanucIfThen--UnsupportedBody) if no PendingAssignments were produced on a truthy condition. FanucProgramNumberSyntax Detects a Fanuc-family program identifier header — O1234 or — that follows a TapeBoundary line, and records it under FanucProgramNumber on the block JSON. The wrapping form (bare vs angle-bracketed) is preserved in Wrapper so the block can be emitted back to its original notation." }, "api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html", "title": "Class FlagSyntax | HiAPI-C# 2025", - "summary": "Class FlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax of fully Match flag. public class FlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term Flag generally not accomanys with variable value. The term Tag generally accomanys with variable value. Constructors FlagSyntax(IEnumerable, IEnumerable) Creates syntax from in-memory path and flag lists (tests or programmatic setup). public FlagSyntax(IEnumerable categoryPath, IEnumerable flags) Parameters categoryPath IEnumerable flags IEnumerable FlagSyntax(XElement) Loads category path and flag list items from XML. public FlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties CategoryPath JSON path segments (each Item) under which matched flags are stored. public List CategoryPath { get; set; } Property Value List FlagList NC tokens to detect and record as flags (exact match). public List FlagList { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class FlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax of fully Match flag. public class FlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The term Flag generally not accomanys with variable value. The term Tag generally accomanys with variable value. Constructors FlagSyntax(IEnumerable, IEnumerable) Creates syntax from in-memory path and flag lists (tests or programmatic setup). public FlagSyntax(IEnumerable categoryPath, IEnumerable flags) Parameters categoryPath IEnumerable flags IEnumerable FlagSyntax(XElement) Loads category path and flag list items from XML. public FlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties CategoryPath JSON path segments (each Item) under which matched flags are stored. public List CategoryPath { get; set; } Property Value List FlagList NC tokens to detect and record as flags (exact match). public List FlagList { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html", @@ -4547,7 +4687,7 @@ "api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.HeadIndexSyntax.html", "title": "Class HeadIndexSyntax | HiAPI-C# 2025", - "summary": "Class HeadIndexSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Parses a leading block index (e.g. Heidenhain line numbers) after an optional HeadSymbol prefix. public class HeadIndexSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeadIndexSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeadIndexSyntax(string) Creates syntax with the given head symbol prefix (may be empty). public HeadIndexSyntax(string headSymbol) Parameters headSymbol string HeadIndexSyntax(XElement) Loads HeadSymbol from persisted XML. public HeadIndexSyntax(XElement src) Parameters src XElement Root element named XName. Properties HeadSymbol public string HeadSymbol { get; set; } Property Value string Remarks The Head Symbol can be not null empty string. NC Index from Heidenhain may have no head symbol. Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeadIndexSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Parses a leading block index (e.g. Heidenhain line numbers) after an optional HeadSymbol prefix. public class HeadIndexSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeadIndexSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: N100 X0 (with HeadSymbol=“N”) #AfterBuild: { \"UnparsedText\": \"X0\", \"IndexNote\": { \"Symbol\": \"N\", \"Number\": 100 } } #BeforeBuild.UnparsedText: N42 (lone head index, no trailing tokens; with HeadSymbol=“N”) #AfterBuild: { \"IndexNote\": { \"Symbol\": \"N\", \"Number\": 42 } } Constructors HeadIndexSyntax(string) Creates syntax with the given head symbol prefix (may be empty). public HeadIndexSyntax(string headSymbol) Parameters headSymbol string HeadIndexSyntax(XElement) Loads HeadSymbol from persisted XML. public HeadIndexSyntax(XElement src) Parameters src XElement Root element named XName. Properties HeadSymbol public string HeadSymbol { get; set; } Property Value string Remarks The Head Symbol can be not null empty string. NC Index from Heidenhain may have no head symbol. Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html", @@ -4567,12 +4707,12 @@ "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainBlkFormSyntax.html", "title": "Class HeidenhainBlkFormSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainBlkFormSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BLK FORM command (workpiece blank definition). public class HeidenhainBlkFormSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainBlkFormSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: BLK FORM 0.1 Z X+0 Y+0 Z-40 Output: { \"BLK FORM\": { \"Type\": \"0.1\", \"Axis\": \"Z\", \"X\": \"+0\", \"Y\": \"+0\", \"Z\": \"-40\" } } Input: BLK FORM 0.2 X+100 Y+100 Z+0 Output: { \"BLK FORM\": { \"Type\": \"0.2\", \"X\": \"+100\", \"Y\": \"+100\", \"Z\": \"+0\" } } Input: BLK FORM CYLINDER Z R50 L105 Output: { \"BLK FORM\": { \"Type\": \"CYLINDER\", \"Axis\": \"Z\", \"R\": \"50\", \"L\": \"105\" } } Constructors HeidenhainBlkFormSyntax() Initializes a new instance with default settings. public HeidenhainBlkFormSyntax() HeidenhainBlkFormSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainBlkFormSyntax(XElement src) Parameters src XElement Source XML element. Fields BlkFormTagList Tags for BLK FORM coordinate/dimension values. public static readonly string[] BlkFormTagList Field Value string[] Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainBlkFormSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BLK FORM command (workpiece blank definition). public class HeidenhainBlkFormSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainBlkFormSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: BLK FORM 0.1 Z X+0 Y+0 Z-40 #AfterBuild: { \"Parsing\": { \"BLK FORM\": { \"Type\": \"0.1\", \"Axis\": \"Z\", \"X\": 0, \"Y\": 0, \"Z\": -40 } } } #BeforeBuild.UnparsedText: BLK FORM 0.2 X+100 Y+100 Z+0 #AfterBuild: { \"Parsing\": { \"BLK FORM\": { \"Type\": \"0.2\", \"X\": 100, \"Y\": 100, \"Z\": 0 } } } #BeforeBuild.UnparsedText: BLK FORM CYLINDER Z R50 L105 #AfterBuild: { \"Parsing\": { \"BLK FORM\": { \"Type\": \"CYLINDER\", \"Axis\": \"Z\", \"R\": 50, \"L\": 105 } } } Constructors HeidenhainBlkFormSyntax() Initializes a new instance with default settings. public HeidenhainBlkFormSyntax() HeidenhainBlkFormSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainBlkFormSyntax(XElement src) Parameters src XElement Source XML element. Fields BlkFormTagList Tags for BLK FORM coordinate/dimension values. public static readonly string[] BlkFormTagList Field Value string[] Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCallSyntax.html", "title": "Class HeidenhainCallSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL). public class HeidenhainCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: CALL PGM SubProg Output: { \"CALL\": { \"Target\": \"PGM\", \"Name\": \"SubProg\" } } Input: CALL LBL 5 Output: { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"5\" } } Input: CALL LBL MyLabel REP 3 Output: { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"MyLabel\", \"REP\": \"3\" } } Constructors HeidenhainCallSyntax() Initializes a new instance with default settings. public HeidenhainCallSyntax() HeidenhainCallSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainCallSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL). public class HeidenhainCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: CALL PGM SubProg #AfterBuild: { \"Parsing\": { \"CALL\": { \"Target\": \"PGM\", \"Name\": \"SubProg\" } } } #BeforeBuild.UnparsedText: CALL LBL 5 #AfterBuild: { \"Parsing\": { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"5\" } } } #BeforeBuild.UnparsedText: CALL LBL MyLabel REP 3 #AfterBuild: { \"Parsing\": { \"CALL\": { \"Target\": \"LBL\", \"Name\": \"MyLabel\", \"REP\": \"3\" } } } Constructors HeidenhainCallSyntax() Initializes a new instance with default settings. public HeidenhainCallSyntax() HeidenhainCallSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainCallSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclDefSyntax.html", @@ -4587,32 +4727,32 @@ "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.html", "title": "Class HeidenhainLSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainLSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain linear movement (the leading L) syntax. public class HeidenhainLSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HeidenhainLSyntax() Initializes a new instance with default settings. public HeidenhainLSyntax() HeidenhainLSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainLSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string TagList Axis tags grabbed as float-valued coordinates after the leading L. public List TagList { get; set; } Property Value List XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainLSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Heidenhain linear movement (the leading L) syntax. Strips the leading L and grabs axis-tag values for any of AxisTagList (X, Y, Z, U, V, W, A, B, C) that appear afterwards as {axis}{signed-value} pairs; values are parsed as floats via ToFloat(string). public class HeidenhainLSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: L X+10 Y+20 Z-5 #AfterBuild: { \"Parsing\": { \"L\": { \"X\": 10, \"Y\": 20, \"Z\": -5 } } } #BeforeBuild.UnparsedText: L A+45 B-15 #AfterBuild: { \"Parsing\": { \"L\": { \"A\": 45, \"B\": -15 } } } Constructors HeidenhainLSyntax() Initializes a new instance with default settings. public HeidenhainLSyntax() HeidenhainLSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainLSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string TagList Axis tags grabbed as float-valued coordinates after the leading L. public List TagList { get; set; } Property Value List XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLblSyntax.html", "title": "Class HeidenhainLblSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainLblSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram. public class HeidenhainLblSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLblSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: LBL 1 Output: { \"LBL\": { \"Name\": \"1\" } } Input: LBL MyLabel Output: { \"LBL\": { \"Name\": \"MyLabel\" } } Input: LBL 0 Output: { \"LBL\": { \"Name\": \"0\" } } Constructors HeidenhainLblSyntax() Initializes a new instance with default settings. public HeidenhainLblSyntax() HeidenhainLblSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainLblSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainLblSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram. public class HeidenhainLblSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainLblSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: LBL 1 #AfterBuild: { \"Parsing\": { \"LBL\": { \"Name\": \"1\" } } } #BeforeBuild.UnparsedText: LBL MyLabel #AfterBuild: { \"Parsing\": { \"LBL\": { \"Name\": \"MyLabel\" } } } #BeforeBuild.UnparsedText: LBL 0 (LBL 0 is the end-of-subprogram sentinel) #AfterBuild: { \"Parsing\": { \"LBL\": { \"Name\": \"0\" } } } Constructors HeidenhainLblSyntax() Initializes a new instance with default settings. public HeidenhainLblSyntax() HeidenhainLblSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainLblSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainPlaneSyntax.html", "title": "Class HeidenhainPlaneSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainPlaneSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain PLANE command. Handles: PLANE RESET PLANE SPATIAL SPA SPB SPC SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] PLANE PROJECTED PROPR PROMIN ROT SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] public class HeidenhainPlaneSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainPlaneSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: PLANE SPATIAL SPA+30 SPB+0 SPC-10 SEQ+ COORD ROT TURN Output: { \"PLANE\": { \"Mode\": \"SPATIAL\", \"SPA\": \"+30\", \"SPB\": \"+0\", \"SPC\": \"-10\", \"SEQ\": \"+\", \"Rot\": \"COORD\", \"Positioning\": \"TURN\" } } Input: PLANE PROJECTED PROPR+30 PROMIN+0 ROT+45 SEQ- TABLE ROT MOVE Output: { \"PLANE\": { \"Mode\": \"PROJECTED\", \"PROPR\": \"+30\", \"PROMIN\": \"+0\", \"ROT\": \"+45\", \"SEQ\": \"-\", \"Rot\": \"TABLE\", \"Positioning\": \"MOVE\" } } Input: PLANE RESET Output: { \"PLANE\": { \"Mode\": \"RESET\" } } Constructors HeidenhainPlaneSyntax() Initializes a new instance with default settings. public HeidenhainPlaneSyntax() HeidenhainPlaneSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainPlaneSyntax(XElement src) Parameters src XElement Source XML element. Fields ProjectedTagList Projected tags for PLANE PROJECTED command. PROPR: projection angle, PROMIN: minimum angle, ROT: rotation of tilted plane. public static readonly string[] ProjectedTagList Field Value string[] SpatialTagList Spatial axis tags for PLANE SPATIAL command. public static readonly string[] SpatialTagList Field Value string[] Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainPlaneSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain PLANE command. Handles: PLANE RESET PLANE SPATIAL SPA SPB SPC SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] PLANE PROJECTED PROPR PROMIN ROT SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] public class HeidenhainPlaneSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainPlaneSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: PLANE SPATIAL SPA+30 SPB+0 SPC-10 SEQ+ COORD ROT TURN #AfterBuild: { \"Parsing\": { \"PLANE\": { \"Mode\": \"SPATIAL\", \"SPA\": 30, \"SPB\": 0, \"SPC\": -10, \"SEQ\": \"+\", \"Rot\": \"COORD\", \"Positioning\": \"TURN\" } } } #BeforeBuild.UnparsedText: PLANE PROJECTED PROPR+30 PROMIN+0 ROT+45 SEQ- TABLE ROT MOVE #AfterBuild: { \"Parsing\": { \"PLANE\": { \"Mode\": \"PROJECTED\", \"PROPR\": 30, \"PROMIN\": 0, \"ROT\": 45, \"SEQ\": \"-\", \"Rot\": \"TABLE\", \"Positioning\": \"MOVE\" } } } #BeforeBuild.UnparsedText: PLANE RESET #AfterBuild: { \"Parsing\": { \"PLANE\": { \"Mode\": \"RESET\" } } } Constructors HeidenhainPlaneSyntax() Initializes a new instance with default settings. public HeidenhainPlaneSyntax() HeidenhainPlaneSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainPlaneSyntax(XElement src) Parameters src XElement Source XML element. Fields ProjectedTagList Projected tags for PLANE PROJECTED command. PROPR: projection angle, PROMIN: minimum angle, ROT: rotation of tilted plane. public static readonly string[] ProjectedTagList Field Value string[] SpatialTagList Spatial axis tags for PLANE SPATIAL command. public static readonly string[] SpatialTagList Field Value string[] Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainProgramSyntax.html", "title": "Class HeidenhainProgramSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainProgramSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BEGIN PGM and END PGM commands. public class HeidenhainProgramSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainProgramSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: BEGIN PGM DEMO MM Output: { \"PGM\": { \"Command\": \"BEGIN\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } Input: END PGM DEMO MM Output: { \"PGM\": { \"Command\": \"END\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } Constructors HeidenhainProgramSyntax() Initializes a new instance with default settings. public HeidenhainProgramSyntax() HeidenhainProgramSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainProgramSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainProgramSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain BEGIN PGM and END PGM commands. public class HeidenhainProgramSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainProgramSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: BEGIN PGM DEMO MM #AfterBuild: { \"Parsing\": { \"PGM\": { \"Command\": \"BEGIN\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } } #BeforeBuild.UnparsedText: END PGM DEMO MM #AfterBuild: { \"Parsing\": { \"PGM\": { \"Command\": \"END\", \"Name\": \"DEMO\", \"Unit\": \"MM\" } } } Constructors HeidenhainProgramSyntax() Initializes a new instance with default settings. public HeidenhainProgramSyntax() HeidenhainProgramSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainProgramSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainToolCallSyntax.html", "title": "Class HeidenhainToolCallSyntax | HiAPI-C# 2025", - "summary": "Class HeidenhainToolCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…] public class HeidenhainToolCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainToolCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples Input: TOOL CALL 1 Z S5000 Output: { \"TOOL CALL\": { \"T\": \"1\", \"Axis\": \"Z\", \"S\": \"5000\" } } Input: TOOL CALL “MyTool” Z S3000 DL+0.5 DR-0.1 Output: { \"TOOL CALL\": { \"T\": \"MyTool\", \"Axis\": \"Z\", \"S\": \"3000\", \"DL\": \"+0.5\", \"DR\": \"-0.1\" } } Constructors HeidenhainToolCallSyntax() Initializes a new instance with default settings. public HeidenhainToolCallSyntax() HeidenhainToolCallSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainToolCallSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class HeidenhainToolCallSyntax Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Assembly HiMech.dll Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…] public class HeidenhainToolCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainToolCallSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: TOOL CALL 1 Z S5000 #AfterBuild: { \"Parsing\": { \"TOOL CALL\": { \"Axis\": \"Z\", \"S\": \"5000\", \"T\": \"1\" } } } #BeforeBuild.UnparsedText: TOOL CALL “MyTool” Z S3000 DL+0.5 DR-0.1 #AfterBuild: { \"Parsing\": { \"TOOL CALL\": { \"Axis\": \"Z\", \"S\": \"3000\", \"DL\": \"+0.5\", \"DR\": \"-0.1\", \"T\": \"MyTool\" } } } Constructors HeidenhainToolCallSyntax() Initializes a new instance with default settings. public HeidenhainToolCallSyntax() HeidenhainToolCallSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainToolCallSyntax(XElement src) Parameters src XElement Source XML element. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name used to register this syntax with XFactory. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html", "title": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Classes HeidenhainBlkFormSyntax Syntax for Heidenhain BLK FORM command (workpiece blank definition). HeidenhainCallSyntax Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL). HeidenhainCyclDefSyntax Initialization Syntax of Heidenhain fixed head block for CYCL DEF . HeidenhainFnAssignmentSyntax Heidenhain FN variable assignment syntax. Extends TagAssignmentSyntax with FN opcode prefix. HeidenhainLSyntax Heidenhain linear movement (the leading L) syntax. HeidenhainLblSyntax Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram. HeidenhainPlaneSyntax Syntax for Heidenhain PLANE command. Handles: PLANE RESET PLANE SPATIAL SPA SPB SPC SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] PLANE PROJECTED PROPR PROMIN ROT SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] HeidenhainProgramSyntax Syntax for Heidenhain BEGIN PGM and END PGM commands. HeidenhainToolCallSyntax Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…]" + "summary": "Namespace Hi.NcParsers.ParsingSyntaxs.Heidenhain Classes HeidenhainBlkFormSyntax Syntax for Heidenhain BLK FORM command (workpiece blank definition). HeidenhainCallSyntax Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL). HeidenhainCyclDefSyntax Initialization Syntax of Heidenhain fixed head block for CYCL DEF . HeidenhainFnAssignmentSyntax Heidenhain FN variable assignment syntax. Extends TagAssignmentSyntax with FN opcode prefix. HeidenhainLSyntax Heidenhain linear movement (the leading L) syntax. Strips the leading L and grabs axis-tag values for any of AxisTagList (X, Y, Z, U, V, W, A, B, C) that appear afterwards as {axis}{signed-value} pairs; values are parsed as floats via ToFloat(string). HeidenhainLblSyntax Syntax for Heidenhain LBL command (label definition). Label can be a number (1-65535) or a text name (e.g., “MyLabel”). LBL 0 is reserved for end of subprogram. HeidenhainPlaneSyntax Syntax for Heidenhain PLANE command. Handles: PLANE RESET PLANE SPATIAL SPA SPB SPC SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] PLANE PROJECTED PROPR PROMIN ROT SEQ+/- [COORD ROT|TABLE ROT] [MOVE|TURN|STAY] HeidenhainProgramSyntax Syntax for Heidenhain BEGIN PGM and END PGM commands. HeidenhainToolCallSyntax Syntax for Heidenhain TOOL CALL command. Handles: TOOL CALL [ToolId|“ToolName”] [X|Y|Z] [S…] [DL…] [DR…]" }, "api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html", @@ -4627,17 +4767,17 @@ "api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.NumberedFlagSyntax.html", "title": "Class NumberedFlagSyntax | HiAPI-C# 2025", - "summary": "Class NumberedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. Single-digit integer codes are zero-padded to canonical 2-digit form (e.g. M6 → M06, G0 → G00, M3 → M03) so that downstream logic syntaxes comparing against IsoKeywords constants (which are always 2-digit form like M06) can match Fanuc-style omitted-leading-zero codes. Two-digit and decimal codes are kept as-is. public class NumberedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object NumberedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Examples of stored canonical flags: Single-digit integer codes, padded: G0 → G00, M3 → M03 Two-digit or longer integer codes, unchanged: G54, M30 Decimal codes, unchanged: G54.1 (Fanuc extended work coordinates) Note: Parameters like P2 in G54.1P2 should be handled by TagSetupSyntax separately. Constructors NumberedFlagSyntax(IEnumerable, IEnumerable, bool) Creates a new NumberedFlagSyntax instance. public NumberedFlagSyntax(IEnumerable categoryPath, IEnumerable codePrefixes, bool allowDecimal = true) Parameters categoryPath IEnumerable JSON path for storing matched codes. codePrefixes IEnumerable Code prefixes to match (e.g., [“G”, “M”]). allowDecimal bool Whether to allow decimal numbers. NumberedFlagSyntax(XElement) Loads category path, code prefixes, and decimal policy from XML. public NumberedFlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties AllowDecimal Whether to allow decimal numbers (e.g., G54.1). public bool AllowDecimal { get; set; } Property Value bool CategoryPath Category path for storing matched codes in JSON. public List CategoryPath { get; set; } Property Value List CodePrefixes Code prefixes to match (e.g., [“G”, “M”]). public List CodePrefixes { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class NumberedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. Single-digit integer codes are zero-padded to canonical 2-digit form (e.g. M6 → M06, G0 → G00, M3 → M03) so that downstream logic syntaxes comparing against IsoKeywords constants (which are always 2-digit form like M06) can match Fanuc-style omitted-leading-zero codes. Two-digit and decimal codes are kept as-is. public class NumberedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object NumberedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Examples of stored canonical flags: Single-digit integer codes, padded: G0 → G00, M3 → M03 Two-digit or longer integer codes, unchanged: G54, M30 Decimal codes, unchanged: G54.1 (Fanuc extended work coordinates) Note: Parameters like P2 in G54.1P2 should be handled by TagSetupSyntax separately. Constructors NumberedFlagSyntax(IEnumerable, IEnumerable, bool) Creates a new NumberedFlagSyntax instance. public NumberedFlagSyntax(IEnumerable categoryPath, IEnumerable codePrefixes, bool allowDecimal = true) Parameters categoryPath IEnumerable JSON path for storing matched codes. codePrefixes IEnumerable Code prefixes to match (e.g., [“G”, “M”]). allowDecimal bool Whether to allow decimal numbers. NumberedFlagSyntax(XElement) Loads category path, code prefixes, and decimal policy from XML. public NumberedFlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties AllowDecimal Whether to allow decimal numbers (e.g., G54.1). public bool AllowDecimal { get; set; } Property Value bool CategoryPath Category path for storing matched codes in JSON. public List CategoryPath { get; set; } Property Value List CodePrefixes Code prefixes to match (e.g., [“G”, “M”]). public List CodePrefixes { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.ParameterizedFlagSyntax.html", "title": "Class ParameterizedFlagSyntax | HiAPI-C# 2025", - "summary": "Class ParameterizedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). This is essentially a combination of main flag matching (like NumberedFlagSyntax) plus scoped TagValueSyntax for the parameters after the main flag. Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle. public class ParameterizedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ParameterizedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Parameters can be stored as typed values via FloatParamPrefixes and IntParamPrefixes (set via property initializer): ParamPrefixes — stored as string (text, for variables like #1, Q2) FloatParamPrefixes — stored as double when parseable, string otherwise IntParamPrefixes — stored as int when parseable, string otherwise Examples: G54.1P1 → {\"G54.1\": {\"P\": \"1\"}} (text) G68.2 X0 I180 → {\"G68.2\": {\"X\": 0.0, \"I\": 180.0}} (float via property initializer) G54.1P#1 → {\"G54.1\": {\"P\": \"#1\"}} (Fanuc variable, kept as string) G54.1PQ1 → {\"G54.1\": {\"P\": \"Q1\"}} (Heidenhain variable) Constructors ParameterizedFlagSyntax(IEnumerable, IEnumerable, IEnumerable, string, IEnumerable) Creates a new ParameterizedFlagSyntax instance. Use property initializers for FloatParamPrefixes and IntParamPrefixes to enable typed parameter storage. public ParameterizedFlagSyntax(IEnumerable categoryPath, IEnumerable codePrefixes, IEnumerable paramPrefixes, string varPrefix, IEnumerable terminateWords = null) Parameters categoryPath IEnumerable JSON path for storing matched codes. codePrefixes IEnumerable Full code prefixes to match (e.g., [“G54.1”, “G10”]). paramPrefixes IEnumerable Parameter prefixes to extract (e.g., [“P”, “L”]). varPrefix string Variable prefix (e.g., “#” for Fanuc, “Q” for Heidenhain). terminateWords IEnumerable Words that stop parameter extraction. ParameterizedFlagSyntax(XElement) Loads all prefix lists, variable prefix, and terminator words from XML. public ParameterizedFlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties CategoryPath Category path for storing matched codes in JSON. public List CategoryPath { get; set; } Property Value List CodePrefixes Full code prefixes to match (e.g., [“G54.1”, “G10”]). public List CodePrefixes { get; set; } Property Value List FloatParamPrefixes Parameter prefixes stored as double when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List FloatParamPrefixes { get; set; } Property Value List IntParamPrefixes Parameter prefixes stored as int when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List IntParamPrefixes { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string ParamPrefixes Parameter prefixes to extract as text string (e.g., [“P”, “L”, “H”]). Multiple parameters can be attached to one code. public List ParamPrefixes { get; set; } Property Value List TerminateWords Words that terminate parameter extraction (e.g., [“G”, “M”, “X”, “Y”, “Z”]). Extraction stops when encountering these prefixes followed by a number. public List TerminateWords { get; set; } Property Value List VarPrefix Variable prefix for macro variables (e.g., “#” for Fanuc, “Q” for Heidenhain). public string VarPrefix { get; set; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ParameterizedFlagSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). This is essentially a combination of main flag matching (like NumberedFlagSyntax) plus scoped TagValueSyntax for the parameters after the main flag. Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle. public class ParameterizedFlagSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ParameterizedFlagSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Parameters can be stored as typed values via FloatParamPrefixes and IntParamPrefixes (set via property initializer): ParamPrefixes — stored as string (text, for variables like #1, Q2) FloatParamPrefixes — stored as double when parseable, string otherwise IntParamPrefixes — stored as int when parseable, string otherwise Examples: G54.1P1 → {\"G54.1\": {\"P\": \"1\"}} (text) G68.2 X0 I180 → {\"G68.2\": {\"X\": 0.0, \"I\": 180.0}} (float via property initializer) G54.1P#1 → {\"G54.1\": {\"P\": \"#1\"}} (Fanuc variable, kept as string) G54.1PQ1 → {\"G54.1\": {\"P\": \"Q1\"}} (Heidenhain variable) Constructors ParameterizedFlagSyntax(IEnumerable, IEnumerable, IEnumerable, string, IEnumerable) Creates a new ParameterizedFlagSyntax instance. Use property initializers for FloatParamPrefixes and IntParamPrefixes to enable typed parameter storage. public ParameterizedFlagSyntax(IEnumerable categoryPath, IEnumerable codePrefixes, IEnumerable paramPrefixes, string varPrefix, IEnumerable terminateWords = null) Parameters categoryPath IEnumerable JSON path for storing matched codes. codePrefixes IEnumerable Full code prefixes to match (e.g., [“G54.1”, “G10”]). paramPrefixes IEnumerable Parameter prefixes to extract (e.g., [“P”, “L”]). varPrefix string Variable prefix (e.g., “#” for Fanuc, “Q” for Heidenhain). terminateWords IEnumerable Words that stop parameter extraction. ParameterizedFlagSyntax(XElement) Loads all prefix lists, variable prefix, and terminator words from XML. public ParameterizedFlagSyntax(XElement src) Parameters src XElement Root element named XName. Properties CategoryPath Category path for storing matched codes in JSON. public List CategoryPath { get; set; } Property Value List CodePrefixes Full code prefixes to match (e.g., [“G54.1”, “G10”]). public List CodePrefixes { get; set; } Property Value List FloatParamPrefixes Parameter prefixes stored as double when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List FloatParamPrefixes { get; set; } Property Value List IntParamPrefixes Parameter prefixes stored as int when parseable, string otherwise (for variable references). Set via property initializer for typed G-code parameters. public List IntParamPrefixes { get; set; } Property Value List Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string ParamPrefixes Parameter prefixes to extract as text string (e.g., [“P”, “L”, “H”]). Multiple parameters can be attached to one code. public List ParamPrefixes { get; set; } Property Value List TerminateWords Words that terminate parameter extraction (e.g., [“G”, “M”, “X”, “Y”, “Z”]). Extraction stops when encountering these prefixes followed by a number. public List TerminateWords { get; set; } Property Value List VarPrefix Variable prefix for macro variables (e.g., “#” for Fanuc, “Q” for Heidenhain). public string VarPrefix { get; set; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.ShrinkIfNoDecimalPointSyntax.html", "title": "Class ShrinkIfNoDecimalPointSyntax | HiAPI-C# 2025", - "summary": "Class ShrinkIfNoDecimalPointSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagValueSyntax so the modified text is parsed correctly by subsequent syntaxes. public class ShrinkIfNoDecimalPointSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ShrinkIfNoDecimalPointSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Modern CNC controllers default to “calculator type” where Y20 = Y20.0. This syntax is only needed for legacy “conventional type” configurations where Y20 = Y0.020 (Fanuc DPI=0, etc.). Properties ImpliedDecimalPlaces Number of implied decimal places when no decimal point is present. 3 → 0.001 (mm), 4 → 0.0001 (inch). public int ImpliedDecimalPlaces { get; set; } Property Value int Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string Tags Tags to check for missing decimal points. Default: X, Y, Z. public List Tags { get; set; } Property Value List XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ShrinkIfNoDecimalPointSyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagValueSyntax so the modified text is parsed correctly by subsequent syntaxes. public class ShrinkIfNoDecimalPointSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ShrinkIfNoDecimalPointSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks Modern CNC controllers default to “calculator type” where Y20 = Y20.0. This syntax is only needed for legacy “conventional type” configurations where Y20 = Y0.020 (Fanuc DPI=0, etc.). Properties ImpliedDecimalPlaces Number of implied decimal places when no decimal point is present. 3 → 0.001 (mm), 4 → 0.0001 (inch). public int ImpliedDecimalPlaces { get; set; } Property Value int Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string Tags Tags to check for missing decimal points. Default: X, Y, Z. public List Tags { get; set; } Property Value List XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html", @@ -4652,27 +4792,27 @@ "api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.TapeBoundarySyntax.html", "title": "Class TapeBoundarySyntax | HiAPI-C# 2025", - "summary": "Class TapeBoundarySyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Detects the % tape leader / trailer at the start of a block and records it under TapeBoundary on the block JSON. Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) — a brand's program-identifier header (e.g. Fanuc O1234) is a separate concern handled by its own brand-specific syntax. public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TapeBoundarySyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TapeBoundarySyntax() Parameterless instance for bundle composition (no XML state). public TapeBoundarySyntax() TapeBoundarySyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public TapeBoundarySyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress IsPreviousNodeTapeBoundary(LazyLinkedListNode) Returns true if the previous block carries a TapeBoundary section, or if there is no previous block at all (start-of-stream is itself a tape boundary). Brand-specific program-identifier syntaxes use this to decide whether the current block can host a program-number header. public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns bool MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class TapeBoundarySyntax Namespace Hi.NcParsers.ParsingSyntaxs Assembly HiMech.dll Detects the % tape leader / trailer at the start of a block and records it under TapeBoundary on the block JSON. Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) — a brand's program-identifier header (e.g. Fanuc O1234) is a separate concern handled by its own brand-specific syntax. public class TapeBoundarySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object TapeBoundarySyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Examples #BeforeBuild.UnparsedText: % #AfterBuild: { \"TapeBoundary\": { \"Text\": \"\" } } #BeforeBuild.UnparsedText: %foo #AfterBuild: { \"TapeBoundary\": { \"Text\": \"foo\" } } #BeforeBuild.UnparsedText: % header text #AfterBuild: { \"TapeBoundary\": { \"Text\": \"header text\" } } Constructors TapeBoundarySyntax() Parameterless instance for bundle composition (no XML state). public TapeBoundarySyntax() TapeBoundarySyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public TapeBoundarySyntax(XElement src) Parameters src XElement Root element named XName. Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress IsPreviousNodeTapeBoundary(LazyLinkedListNode) Returns true if the previous block carries a TapeBoundary section, or if there is no previous block at all (start-of-stream is itself a tape boundary). Brand-specific program-identifier syntaxes use this to decide whether the current block can host a program-number header. public static bool IsPreviousNodeTapeBoundary(LazyLinkedListNode node) Parameters node LazyLinkedListNode Returns bool MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.ParsingSyntaxs.html": { "href": "api/Hi.NcParsers.ParsingSyntaxs.html", "title": "Namespace Hi.NcParsers.ParsingSyntaxs | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.ParsingSyntaxs Classes BlockSkipSyntax Parses the ISO 6983 / Fanuc Block Delete (a.k.a. Block Skip) prefix / or /N (N = 1..9) at the head of an NC block. Behaviour: No leading / → no-op, no BlockSkip section is written. / with IBlockSkipConfig layer OFF (or the dependency absent) → prefix is consumed, BlockSkip Symbol/Layer recorded for audit, Body stays null; the rest of the block stays in UnparsedText and parses normally. / with layer ON → the remaining block text is moved from UnparsedText into Body and UnparsedText is cleared. Downstream parsing syntaxes see no NC text so they emit nothing; semantics therefore produce no act. Must run after comment / CsScript syntaxes so that comments (and CsScript embedded in comments) continue to take effect regardless of the skip switch. CsScriptSyntax Extracts C# script markers from the oral content of a comment. PreMarker marks a script that runs before the NC block; PostMarker marks a script that runs after. The symbols are configurable and serialized to XML. FanucProgramNumberSyntax Detects a Fanuc-family program identifier header — O1234 or — that follows a TapeBoundary line, and records it under FanucProgramNumber on the block JSON. The wrapping form (bare vs angle-bracketed) is preserved in Wrapper so the block can be emitted back to its original notation. FlagSyntax Syntax of fully Match flag. FloatTagValueSyntax TagValueSyntax that parses numeric literal values to double. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. HeadIndexSyntax Parses a leading block index (e.g. Heidenhain line numbers) after an optional HeadSymbol prefix. IntegerTagValueSyntax TagValueSyntax that parses numeric literal values to int. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. NamedVarAssignmentSyntax Assignment syntax for named (identifier-style) variables with = sign. Handles variables that are multi-character identifiers rather than {prefix}{digits}. NumberedFlagSyntax Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. Single-digit integer codes are zero-padded to canonical 2-digit form (e.g. M6 → M06, G0 → G00, M3 → M03) so that downstream logic syntaxes comparing against IsoKeywords constants (which are always 2-digit form like M06) can match Fanuc-style omitted-leading-zero codes. Two-digit and decimal codes are kept as-is. ParameterizedFlagSyntax Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). This is essentially a combination of main flag matching (like NumberedFlagSyntax) plus scoped TagValueSyntax for the parameters after the main flag. Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle. ShrinkIfNoDecimalPointSyntax Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagValueSyntax so the modified text is parsed correctly by subsequent syntaxes. TagAssignmentSyntax Assignment syntax with = sign. Unlike TagValueSyntax which handles concatenated tag-value pairs (no = sign), this class handles explicit assignment statements. TagValueSyntax Concatenated tag-value syntax (no = sign). ex. Heidenhain: L X Q2 Y33.4 FQ1 ISO: X100.3Y3.3 TapeBoundarySyntax Detects the % tape leader / trailer at the start of a block and records it under TapeBoundary on the block JSON. Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) — a brand's program-identifier header (e.g. Fanuc O1234) is a separate concern handled by its own brand-specific syntax." + "summary": "Namespace Hi.NcParsers.ParsingSyntaxs Classes BlockSkipSyntax Parses the ISO 6983 / Fanuc Block Delete (a.k.a. Block Skip) prefix / or /N (N = 1..9) at the head of an NC block. Behaviour: No leading / → no-op, no BlockSkip section is written. / with IBlockSkipConfig layer OFF (or the dependency absent) → prefix is consumed, BlockSkip Symbol/Layer recorded for audit, Body stays null; the rest of the block stays in UnparsedText and parses normally. / with layer ON → the remaining block text is moved from UnparsedText into Body and UnparsedText is cleared. Downstream parsing syntaxes see no NC text so they emit nothing; semantics therefore produce no act. Must run after comment / CsScript syntaxes so that comments (and CsScript embedded in comments) continue to take effect regardless of the skip switch. CsScriptSyntax Extracts C# script markers from the oral content of a comment. PreMarker marks a script that runs before the NC block; PostMarker marks a script that runs after. The symbols are configurable and serialized to XML. FlagSyntax Syntax of fully Match flag. FloatTagValueSyntax TagValueSyntax that parses numeric literal values to double. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. HeadIndexSyntax Parses a leading block index (e.g. Heidenhain line numbers) after an optional HeadSymbol prefix. IntegerTagValueSyntax TagValueSyntax that parses numeric literal values to int. Variable text (e.g. Q2, #1, [#1+#2]) remains as string. NamedVarAssignmentSyntax Assignment syntax for named (identifier-style) variables with = sign. Handles variables that are multi-character identifiers rather than {prefix}{digits}. NumberedFlagSyntax Syntax for numbered flags (prefix + number) with optional decimal support. NumberedFlagSyntax often should place after something like ParameterizedFlagSyntax. Since NumberedFlagSyntax is easy to eat those kind of flags. Single-digit integer codes are zero-padded to canonical 2-digit form (e.g. M6 → M06, G0 → G00, M3 → M03) so that downstream logic syntaxes comparing against IsoKeywords constants (which are always 2-digit form like M06) can match Fanuc-style omitted-leading-zero codes. Two-digit and decimal codes are kept as-is. ParameterizedFlagSyntax Syntax for flags with attached parameters (e.g., G54.1P1, G10L2P1). This is essentially a combination of main flag matching (like NumberedFlagSyntax) plus scoped TagValueSyntax for the parameters after the main flag. Note that the ParameterizedFlagSyntax often should be applied before NumberedFlagSyntax since NumberedFlagSyntax may eat the text that ParameterizedFlagSyntax should handle. ShrinkIfNoDecimalPointSyntax Applies the “conventional type” decimal-point interpretation to coordinate values in UnparsedText. When a tag value has no decimal point (e.g. Y20), it is shrunk by the implied decimal places: Y20 → Y0.020 (3 decimal places). Values that already contain a decimal point are left unchanged. Place inside BundleSyntax before FloatTagValueSyntax so the modified text is parsed correctly by subsequent syntaxes. TagAssignmentSyntax Assignment syntax with = sign. Unlike TagValueSyntax which handles concatenated tag-value pairs (no = sign), this class handles explicit assignment statements. TagValueSyntax Concatenated tag-value syntax (no = sign). ex. Heidenhain: L X Q2 Y33.4 FQ1 ISO: X100.3Y3.3 TapeBoundarySyntax Detects the % tape leader / trailer at the start of a block and records it under TapeBoundary on the block JSON. Universal across ISO controllers (Fanuc, Mazak, Syntec, Siemens) — a brand's program-identifier header (e.g. Fanuc O1234) is a separate concern handled by its own brand-specific syntax." }, "api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html": { "href": "api/Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html", "title": "Class ModalCarrySyntax | HiAPI-C# 2025", - "summary": "Class ModalCarrySyntax Namespace Hi.NcParsers.PostLogicSyntaxs Assembly HiMech.dll Per-block modal-section carry. For each key in TrackedKeys, if the current block has no section for that key, deep-clone the same section from the immediately previous block (which is itself guaranteed to carry it because every block is processed by this syntax) and set AddedByKey = AddedByValue inside the cloned section. Lets every block stand alone with its full modal context, so downstream readers (cache-file dumps, semantics, UI jumping to a single block) do not need EnumerateBack() to resolve modal state. This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still recognised on load for backward compatibility with previously-saved project files. public class ModalCarrySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ModalCarrySyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ModalCarrySyntax() Creates an empty ModalCarrySyntax; populate TrackedKeys before use. public ModalCarrySyntax() ModalCarrySyntax(XElement) Reconstructs a ModalCarrySyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public ModalCarrySyntax(XElement src) Parameters src XElement XML element carrying a TrackedKeys child with one Key per entry; null is treated as defaults. Fields AddedByValue Value written under AddedByKey on each section this syntax deep-clones from the previous block. Mirrors AddedByValue's role for its own synthesis — both let cache-file readers distinguish post-Logic / Inspection stage injections from LogicSyntaxs-stage authored values (the latter have no AddedByKey). public const string AddedByValue = \"ModalCarry\" Field Value string Properties Default Full-set carrier (Logic ∪ PostLogic) — retained for the legacy backstop in SoftNcRunner that appends a single ModalCarry to pre-3.1.168 project syntax lists. New brand syntax kits should split into Logic + PostLogic instead. public static ModalCarrySyntax Default { get; } Property Value ModalCarrySyntax Logic Logic-stage carrier — modal sections that are written in the Logic bundle and never mutated by PostLogic. Carrying these at the end of each block's Logic bundle keeps single-step node.Previous modal lookups from Logic syntaxes correct, even when a PostLogic syntax (e.g. RadiusCompensationSyntax) does node.Next look-forward and drags subsequent blocks' Logic builds forward before the intermediate block's PostLogic ModalCarry has run. public static ModalCarrySyntax Logic { get; } Property Value ModalCarrySyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string PostLogic PostLogic-stage carrier — modal sections that may still be mutated by PostLogic syntaxes after Logic completes. Today only MachineCoordinateState qualifies (overwritten by RadiusCompensationSyntax with the radius-compensated position). Carrying these at the end of PostLogic ensures the modal value reflects the final, post-compensation state. public static ModalCarrySyntax PostLogic { get; } Property Value ModalCarrySyntax TrackedKeys Section keys to carry. Order-insensitive; duplicates ignored. public List TrackedKeys { get; set; } Property Value List XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode node, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters node LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class ModalCarrySyntax Namespace Hi.NcParsers.PostLogicSyntaxs Assembly HiMech.dll Per-block modal-section carry. For each key in TrackedKeys, if the current block has no section for that key, deep-clone the same section from the immediately previous block (which is itself guaranteed to carry it because every block is processed by this syntax) and set AddedByKey = AddedByValue inside the cloned section. Lets every block stand alone with its full modal context, so downstream readers (cache-file dumps, semantics, UI jumping to a single block) do not need EnumerateBack() to resolve modal state. A JSON section is a candidate for TrackedKeys when ALL four criteria hold: Writers concentrated — one or two syntaxes own the section (e.g. LinearMotionSyntax / CircularMotionSyntax own MotionState; the call/return pair own SubProgramCall-derived state). Readers distributed — multiple downstream consumers each need the value, and none of them should walk back to find it. Single-reader sections do not benefit from blanket carry. Every block must see the section — cache-dump readers landing randomly, single-block UI views, and look-ahead syntaxes all require the section to be present on every block. Carry is unconditional — no frame-gating or other per-block veto. Sections that need conditional carry (e.g. FanucLocalVariableReadingSyntax's frame-aware Vars.Local dict-merge — carry only when MacroFrame matches) belong in the owning syntax's own carry logic, not here. A section failing any criterion should be carried through its owning syntax's own logic (single-step node.Previous read, or no carry at all if absence is meaningful — e.g. MacroFrame absent = main frame). This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still recognised on load for backward compatibility with previously-saved project files. public class ModalCarrySyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object ModalCarrySyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ModalCarrySyntax() Creates an empty ModalCarrySyntax; populate TrackedKeys before use. public ModalCarrySyntax() ModalCarrySyntax(XElement) Reconstructs a ModalCarrySyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). public ModalCarrySyntax(XElement src) Parameters src XElement XML element carrying a TrackedKeys child with one Key per entry; null is treated as defaults. Fields AddedByValue Value written under AddedByKey on each section this syntax deep-clones from the previous block. Mirrors AddedByValue's role for its own synthesis — both let cache-file readers distinguish post-Logic / Inspection stage injections from LogicSyntaxs-stage authored values (the latter have no AddedByKey). public const string AddedByValue = \"ModalCarry\" Field Value string Properties Default Full-set carrier (Logic ∪ PostLogic) — retained for the legacy backstop in SoftNcRunner that appends a single ModalCarry to pre-3.1.168 project syntax lists. New brand syntax kits should split into Logic + PostLogic instead. public static ModalCarrySyntax Default { get; } Property Value ModalCarrySyntax Logic Logic-stage carrier — modal sections that are written in the Logic bundle and never mutated by PostLogic. Carrying these at the end of each block's Logic bundle keeps single-step node.Previous modal lookups from Logic syntaxes correct, even when a PostLogic syntax (e.g. RadiusCompensationSyntax) does node.Next look-forward and drags subsequent blocks' Logic builds forward before the intermediate block's PostLogic ModalCarry has run. public static ModalCarrySyntax Logic { get; } Property Value ModalCarrySyntax Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string PostLogic PostLogic-stage carrier — modal sections that may still be mutated by PostLogic syntaxes after Logic completes. Today only MachineCoordinateState qualifies (overwritten by RadiusCompensationSyntax with the radius-compensated position). Carrying these at the end of PostLogic ensures the modal value reflects the final, post-compensation state. public static ModalCarrySyntax PostLogic { get; } Property Value ModalCarrySyntax TrackedKeys Section keys to carry. Order-insensitive; duplicates ignored. public List TrackedKeys { get; set; } Property Value List XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode node, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters node LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html": { "href": "api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html", "title": "Class RadiusCompensationSyntax | HiAPI-C# 2025", - "summary": "Class RadiusCompensationSyntax Namespace Hi.NcParsers.PostLogicSyntaxs Assembly HiMech.dll Resolves cutter radius compensation (G41/G42/G40) by offsetting the tool path perpendicular to the programmed direction. Must be placed after motion syntaxes (CircularMotionSyntax, LinearMotionSyntax) because it reads the Hi.Motion section. Must NOT be placed inside BundleSyntax because it requires look-forward (Next). For simple cases (line-line, no transient), the syntax overwrites MachineCoordinate with the offset position. For arc blocks that need transient bridging segments, the Motion section is replaced with a CompoundMotion containing sub-items. public class RadiusCompensationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object RadiusCompensationSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RadiusCompensationSyntax() Creates a default RadiusCompensationSyntax. public RadiusCompensationSyntax() RadiusCompensationSyntax(XElement) Reconstructs a RadiusCompensationSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). The element carries no fields, so src is used only for factory dispatch. public RadiusCompensationSyntax(XElement src) Parameters src XElement XML element previously produced by MakeXmlSource(string, string, bool). Fields ArcBeginProgramXyzKey JSON key for the arc begin program position inside CompoundMotion arc items. public const string ArcBeginProgramXyzKey = \"ArcBeginProgramXyz\" Field Value string MotionProgramXyzKey JSON key for the compensated program position inside Motion sections and CompoundMotion arc items. public const string MotionProgramXyzKey = \"MotionProgramXyz\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class RadiusCompensationSyntax Namespace Hi.NcParsers.PostLogicSyntaxs Assembly HiMech.dll Resolves cutter radius compensation (G41/G42/G40) by offsetting the tool path perpendicular to the programmed direction. Must be placed after motion syntaxes (CircularMotionSyntax, LinearMotionSyntax) because it reads the Hi.Motion section. Must NOT be placed inside BundleSyntax because it requires look-forward (Next). For simple cases (line-line, no transient), the syntax overwrites MachineCoordinate with the offset position. For arc blocks that need transient bridging segments, the Motion section is replaced with a CompoundMotion containing sub-items. public class RadiusCompensationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object RadiusCompensationSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors RadiusCompensationSyntax() Creates a default RadiusCompensationSyntax. public RadiusCompensationSyntax() RadiusCompensationSyntax(XElement) Reconstructs a RadiusCompensationSyntax from a project XML element previously produced by MakeXmlSource(string, string, bool). The element carries no fields, so src is used only for factory dispatch. public RadiusCompensationSyntax(XElement src) Parameters src XElement XML element previously produced by MakeXmlSource(string, string, bool). Fields ArcBeginProgramXyzKey JSON key for the arc begin program position inside CompoundMotion arc items. public const string ArcBeginProgramXyzKey = \"ArcBeginProgramXyz\" Field Value string MotionProgramXyzKey JSON key for the compensated program position inside Motion sections and CompoundMotion arc items. public const string MotionProgramXyzKey = \"MotionProgramXyz\" Field Value string Properties Name Syntax kind name (typically the concrete type name). public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.PostLogicSyntaxs.html": { "href": "api/Hi.NcParsers.PostLogicSyntaxs.html", "title": "Namespace Hi.NcParsers.PostLogicSyntaxs | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.PostLogicSyntaxs Classes ModalCarrySyntax Per-block modal-section carry. For each key in TrackedKeys, if the current block has no section for that key, deep-clone the same section from the immediately previous block (which is itself guaranteed to carry it because every block is processed by this syntax) and set AddedByKey = AddedByValue inside the cloned section. Lets every block stand alone with its full modal context, so downstream readers (cache-file dumps, semantics, UI jumping to a single block) do not need EnumerateBack() to resolve modal state. This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still recognised on load for backward compatibility with previously-saved project files. RadiusCompensationSyntax Resolves cutter radius compensation (G41/G42/G40) by offsetting the tool path perpendicular to the programmed direction. Must be placed after motion syntaxes (CircularMotionSyntax, LinearMotionSyntax) because it reads the Hi.Motion section. Must NOT be placed inside BundleSyntax because it requires look-forward (Next). For simple cases (line-line, no transient), the syntax overwrites MachineCoordinate with the offset position. For arc blocks that need transient bridging segments, the Motion section is replaced with a CompoundMotion containing sub-items." + "summary": "Namespace Hi.NcParsers.PostLogicSyntaxs Classes ModalCarrySyntax Per-block modal-section carry. For each key in TrackedKeys, if the current block has no section for that key, deep-clone the same section from the immediately previous block (which is itself guaranteed to carry it because every block is processed by this syntax) and set AddedByKey = AddedByValue inside the cloned section. Lets every block stand alone with its full modal context, so downstream readers (cache-file dumps, semantics, UI jumping to a single block) do not need EnumerateBack() to resolve modal state. A JSON section is a candidate for TrackedKeys when ALL four criteria hold: Writers concentrated — one or two syntaxes own the section (e.g. LinearMotionSyntax / CircularMotionSyntax own MotionState; the call/return pair own SubProgramCall-derived state). Readers distributed — multiple downstream consumers each need the value, and none of them should walk back to find it. Single-reader sections do not benefit from blanket carry. Every block must see the section — cache-dump readers landing randomly, single-block UI views, and look-ahead syntaxes all require the section to be present on every block. Carry is unconditional — no frame-gating or other per-block veto. Sections that need conditional carry (e.g. FanucLocalVariableReadingSyntax's frame-aware Vars.Local dict-merge — carry only when MacroFrame matches) belong in the owning syntax's own carry logic, not here. A section failing any criterion should be carried through its owning syntax's own logic (single-step node.Previous read, or no carry at all if absence is meaningful — e.g. MacroFrame absent = main frame). This replaces the earlier CacheSyntax design (which sampled every Pace blocks). The legacy CacheSyntax XName is still recognised on load for backward compatibility with previously-saved project files. RadiusCompensationSyntax Resolves cutter radius compensation (G41/G42/G40) by offsetting the tool path perpendicular to the programmed direction. Must be placed after motion syntaxes (CircularMotionSyntax, LinearMotionSyntax) because it reads the Hi.Motion section. Must NOT be placed inside BundleSyntax because it requires look-forward (Next). For simple cases (line-line, no transient), the syntax overwrites MachineCoordinate with the offset position. For arc blocks that need transient bridging segments, the Motion section is replaced with a CompoundMotion containing sub-items." }, "api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html": { "href": "api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html", @@ -4692,7 +4832,7 @@ "api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html": { "href": "api/Hi.NcParsers.Segmenters.SingleLineSegmenter.html", "title": "Class SingleLineSegmenter | HiAPI-C# 2025", - "summary": "Class SingleLineSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll Maps each physical source line to one Sentence (no multi-line merging). public class SingleLineSegmenter : ISegmenter, IToXElement Inheritance object SingleLineSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Display name of this segmenter. public string Name { get; } Property Value string XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods GetSentences(LazyLinkedList, NcDiagnosticProgress) Segments the indexed file lines into Sentences. public IEnumerable GetSentences(LazyLinkedList indexedFileLines, NcDiagnosticProgress ncDiagnosticProgress) Parameters indexedFileLines LazyLinkedList The lazy linked list of indexed file lines. ncDiagnosticProgress NcDiagnosticProgress Diagnostic progress reporter. Returns IEnumerable A sequence of Sentences. ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." + "summary": "Class SingleLineSegmenter Namespace Hi.NcParsers.Segmenters Assembly HiMech.dll Maps each physical source line to one Sentence (no multi-line merging). public class SingleLineSegmenter : ISegmenter, IToXElement Inheritance object SingleLineSegmenter Implements ISegmenter IToXElement Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Name Display name of this segmenter. public string Name { get; } Property Value string XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods GetSentences(LazyLinkedList, NcDiagnosticProgress) Segments the indexed file lines into Sentences. public IEnumerable GetSentences(LazyLinkedList indexedFileLines, NcDiagnosticProgress ncDiagnosticProgress) Parameters indexedFileLines LazyLinkedList The lazy linked list of indexed file lines. ncDiagnosticProgress NcDiagnosticProgress Diagnostic progress reporter. Returns IEnumerable A sequence of Sentences. ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." }, "api/Hi.NcParsers.Segmenters.html": { "href": "api/Hi.NcParsers.Segmenters.html", @@ -4707,7 +4847,7 @@ "api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html": { "href": "api/Hi.NcParsers.Semantics.CompoundMotionSemantic.html", "title": "Class CompoundMotionSemantic | HiAPI-C# 2025", - "summary": "Class CompoundMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves ICompoundMotionDef into acts by delegating ItemsKey to ResolveItems(JsonArray, LazyLinkedListNode, Vec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig). public class CompoundMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object CompoundMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Resolve(LazyLinkedListNode, List, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. public IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" + "summary": "Class CompoundMotionSemantic Namespace Hi.NcParsers.Semantics Assembly HiMech.dll Resolves ICompoundMotionDef into acts by delegating ItemsKey to ResolveItems(JsonArray, LazyLinkedListNode, DVec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig, IMachineKinematics). public class CompoundMotionSemantic : INcSemantic, IMakeXmlSource Inheritance object CompoundMotionSemantic Implements INcSemantic IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties DisplayName The process name shown on UI. public string DisplayName { get; } Property Value string XName XML element name used to register and serialize this semantic. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. Resolve(LazyLinkedListNode, List, NcDiagnosticProgress) Resolve the syntaxPieceNode into a sequence of IAct. May also mutate SyntaxPiece.JsonObject for downstream semantics. public IEnumerable Resolve(LazyLinkedListNode syntaxPieceNode, List dependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode dependencyList List ncDiagnosticProgress NcDiagnosticProgress Returns IEnumerable" }, "api/Hi.NcParsers.Semantics.CoolantSemantic.html": { "href": "api/Hi.NcParsers.Semantics.CoolantSemantic.html", @@ -4767,7 +4907,7 @@ "api/Hi.NcParsers.Semantics.html": { "href": "api/Hi.NcParsers.Semantics.html", "title": "Namespace Hi.NcParsers.Semantics | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Semantics Classes ClLinearMotionSemantic Resolves ClLinear motion into CL-level linear interpolation with per-step inverse kinematics. Used when RTCP (G43.4/TRAORI/M128) is active and rotary axes change, producing ActClDerivedMcXyzabcContour. The CL (cutter location) endpoints are derived from MC endpoints via forward kinematics, then interpolated linearly. The MC path is non-linear because the tool orientation changes during the move. CompoundMotionSemantic Resolves ICompoundMotionDef into acts by delegating ItemsKey to ResolveItems(JsonArray, LazyLinkedListNode, Vec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig). CoolantSemantic Resolves the ICoolantDef JSON section (written by CoolantSyntax from M07/M08/M09) into an ActCooling act. Only emits when the coolant mode changes from the previous block — modal state is suppressed so downstream consumers (e.g. StateActRunner) see one act per real transition rather than one per block. CsScriptBeginSemantic Resolves BeginScript into ActLineCsScript. Must be placed at the beginning of NcSemanticList so that the script runs before motion and other acts. CsScriptEndSemantic Resolves EndScript into ActLineCsScript. Must be placed at the end of NcSemanticList so that the script runs after motion and other acts. CsScriptSemantic Base class for resolving CsScript JSON entries into ActLineCsScript. Subclasses specify which script key to read (BeginScript or EndScript). Also supports an external script dictionary via ExternalScripts. When set, each NC block's FileLineIndex is looked up in the dictionary and the matched script is emitted as an additional ActLineCsScript. This allows runtime injection of per-line scripts without modifying the NC file. MachineCoordinateStepSemantic Read MachineCoordinate from MachineCoordinateState in JsonObject and produce ActMcXyzStep. Requires ProgramXyzSyntax to have computed McXyz first. McArcMotionSemantic Resolves McArc motion into ActFeedrate + ActMcXyzSpiralContour. Reads arc center, plane normal, and direction from the Hi.Motion section written by CircularMotionSyntax. McLinearMotionSemantic Resolves McLinear motion into ActFeedrate/ActRapid + ActMcXyzLinearContour or ActMcXyzabcLinearContour. Discriminates by checking whether rotary axis values (A/B/C) are present in MachineCoordinateState: XYZ only → ActMcXyzLinearContour XYZABC → ActMcXyzabcLinearContour with Fanuc composite feedrate: d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg² + ΔC_deg²) SpindleSpeedSemantic Resolves ISpindleSpeedDef section into ActSpindleSpeed and ActSpindleDirection. Only emits when spindle speed or direction actually changes from the previous block. StrokeLimitCheckSemantic Reports a diagnostic error when MachineCoordinateState exceeds the stroke limits defined in IStrokeLimitConfig. Does not emit any IAct; only produces diagnostics. ToolChangeSemantic Resolves SectionName section into ActToolingStep (when M06 is present) or ActToolingTeleport (T-code only, no M06). Reads ToolingTime for the change duration. Interfaces INcSemantic Resolves SyntaxPiece into IAct sequence. Unlike INcSyntax which only transforms data in-place, INcSemantic produces machine actions from the parsed syntax data." + "summary": "Namespace Hi.NcParsers.Semantics Classes ClLinearMotionSemantic Resolves ClLinear motion into CL-level linear interpolation with per-step inverse kinematics. Used when RTCP (G43.4/TRAORI/M128) is active and rotary axes change, producing ActClDerivedMcXyzabcContour. The CL (cutter location) endpoints are derived from MC endpoints via forward kinematics, then interpolated linearly. The MC path is non-linear because the tool orientation changes during the move. CompoundMotionSemantic Resolves ICompoundMotionDef into acts by delegating ItemsKey to ResolveItems(JsonArray, LazyLinkedListNode, DVec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig, IMachineKinematics). CoolantSemantic Resolves the ICoolantDef JSON section (written by CoolantSyntax from M07/M08/M09) into an ActCooling act. Only emits when the coolant mode changes from the previous block — modal state is suppressed so downstream consumers (e.g. StateActRunner) see one act per real transition rather than one per block. CsScriptBeginSemantic Resolves BeginScript into ActLineCsScript. Must be placed at the beginning of NcSemanticList so that the script runs before motion and other acts. CsScriptEndSemantic Resolves EndScript into ActLineCsScript. Must be placed at the end of NcSemanticList so that the script runs after motion and other acts. CsScriptSemantic Base class for resolving CsScript JSON entries into ActLineCsScript. Subclasses specify which script key to read (BeginScript or EndScript). Also supports an external script dictionary via ExternalScripts. When set, each NC block's FileLineIndex is looked up in the dictionary and the matched script is emitted as an additional ActLineCsScript. This allows runtime injection of per-line scripts without modifying the NC file. MachineCoordinateStepSemantic Read MachineCoordinate from MachineCoordinateState in JsonObject and produce ActMcXyzStep. Requires ProgramXyzSyntax to have computed McXyz first. McArcMotionSemantic Resolves McArc motion into ActFeedrate + ActMcXyzSpiralContour. Reads arc center, plane normal, and direction from the Hi.Motion section written by CircularMotionSyntax. McLinearMotionSemantic Resolves McLinear motion into ActFeedrate/ActRapid + ActMcXyzLinearContour or ActMcXyzabcLinearContour. Discriminates by checking whether rotary axis values (A/B/C) are present in MachineCoordinateState: XYZ only → ActMcXyzLinearContour XYZABC → ActMcXyzabcLinearContour with Fanuc composite feedrate: d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg² + ΔC_deg²) SpindleSpeedSemantic Resolves ISpindleSpeedDef section into ActSpindleSpeed and ActSpindleDirection. Only emits when spindle speed or direction actually changes from the previous block. StrokeLimitCheckSemantic Reports a diagnostic error when MachineCoordinateState exceeds the stroke limits defined in IStrokeLimitConfig. Does not emit any IAct; only produces diagnostics. ToolChangeSemantic Resolves SectionName section into ActToolingStep (when M06 is present) or ActToolingTeleport (T-code only, no M06). Reads ToolingTime for the change duration. Interfaces INcSemantic Resolves SyntaxPiece into IAct sequence. Unlike INcSyntax which only transforms data in-place, INcSemantic produces machine actions from the parsed syntax data." }, "api/Hi.NcParsers.Sentence.html": { "href": "api/Hi.NcParsers.Sentence.html", @@ -4777,17 +4917,17 @@ "api/Hi.NcParsers.SoftNcRunner.html": { "href": "api/Hi.NcParsers.SoftNcRunner.html", "title": "Class SoftNcRunner | HiAPI-C# 2025", - "summary": "Class SoftNcRunner Namespace Hi.NcParsers Assembly HiMech.dll Configurable NC Runner. public class SoftNcRunner : IControlRunner, IMakeXmlSource Inheritance object SoftNcRunner Implements IControlRunner IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SoftNcRunner() Creates an empty runner; populate the pipeline lists before use. public SoftNcRunner() SoftNcRunner(XElement, string, string, IProgress, object[]) Reconstructs a SoftNcRunner from a project XML element. Each pipeline list (NcDependencyList, Segmenter, NcInitializationList, NcSyntaxList, NcSemanticList) is rehydrated via XFactory. public SoftNcRunner(XElement src, string baseDirectory, string relFile, IProgress progress, object[] res = null) Parameters src XElement XML element previously produced by MakeXmlSource(string, string, bool). baseDirectory string Project base directory for resolving relative paths. relFile string Project file path relative to baseDirectory. progress IProgress Diagnostic sink propagated to nested factories. res object[] Optional ambient resources (e.g. ProjectApiVersion for legacy patches). Properties FanucNcRunner Brand preset for Fanuc — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner FanucNcRunner { get; } Property Value SoftNcRunner HeidenhainNcRunner Brand preset for Heidenhain — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner HeidenhainNcRunner { get; } Property Value SoftNcRunner MazakNcRunner Brand preset for Mazak — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner MazakNcRunner { get; } Property Value SoftNcRunner NcDependencyList External configuration providers consumed by syntaxes/semantics (machine axes, tool offsets, coordinate tables, block-skip flags, etc.). public List NcDependencyList { get; set; } Property Value List NcInitializationList Seeds the initial SyntaxPiece JSON state (e.g. home position, defaults). public List NcInitializationList { get; set; } Property Value List NcSemanticList Final-stage semantics that turn the last syntax layer into SourcedActEntry records consumed by the runtime. public List NcSemanticList { get; set; } Property Value List NcSyntaxList Ordered syntax pipeline. Each entry consumes the previous layer's SyntaxPiece stream and emits the next layer. public List NcSyntaxList { get; set; } Property Value List Segmenter Splits raw NC text into Sentence blocks. public ISegmenter Segmenter { get; set; } Property Value ISegmenter SiemensNcRunner Brand preset for Siemens — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner SiemensNcRunner { get; } Property Value SoftNcRunner SyntecNcRunner Brand preset for Syntec — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner SyntecNcRunner { get; } Property Value SoftNcRunner XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods ConfigureByMachiningChain(IMachiningChain) Configures this SoftNcRunner to match the kinematic chain of a machine tool. Registers every axis present on the chain into the IMachineAxisConfig in NcDependencyList (linear or rotary, derived from whether the chain's transformer implements IDynamicRotation). When the chain carries any rotary axis, a NcKinematicsDependency is appended so that downstream syntaxes / semantics (e.g. G53.1, G68.2, McLinearMotionSemantic) can resolve orientation; its KinematicsProvider is intentionally left null — the owning project service wires it up after the solver instance is available (see LocalProjectService.BuildCoordinateConverter). public void ConfigureByMachiningChain(IMachiningChain chain) Parameters chain IMachiningChain The machining chain whose axes and kinematics the runner should match. No-op when null. EnumerateSnapshotSyntaxs() Enumerates every SnapshotSyntax reachable from NcSyntaxList, including those nested inside any top-level BundleSyntax's inner list. Yields in pipeline-execution order: each top-level slot in turn, and within a bundle slot the bundle's SyntaxList order. public IEnumerable EnumerateSnapshotSyntaxs() Returns IEnumerable FromLegacyNcEnvXml(XElement, IMachiningChain) Creates a SoftNcRunner from legacy HardNcEnv XML. Picks the brand-specific runner by the CncBrand element and populates dependencies from the legacy XML values. When a chain is provided, also calls ConfigureByMachiningChain(IMachiningChain) so the runner's axis configuration and kinematics dependency reflect the machine tool loaded alongside the legacy project. Remove this region when HardNcEnv is fully replaced. public static SoftNcRunner FromLegacyNcEnvXml(XElement ncEnvXml, IMachiningChain chain = null) Parameters ncEnvXml XElement The inner XML element of the legacy HardNcEnv. chain IMachiningChain Optional machining chain for axis/kinematics configuration. Returns SoftNcRunner A configured SoftNcRunner. GetSourcedActEntrysFromNode(LazyLinkedListNode, NcDiagnosticProgress, CancellationToken) Drives the NcSemanticList over the post-syntax SyntaxPiece stream starting at startNode, yielding a SourcedActEntry for each emitted IAct (or a single null-act entry when a semantic produces no acts but still updates the source SyntaxPiece). public IEnumerable GetSourcedActEntrysFromNode(LazyLinkedListNode startNode, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken) Parameters startNode LazyLinkedListNode First node to evaluate; iteration walks Next. ncDiagnosticProgress NcDiagnosticProgress Sink for semantic exceptions. cancellationToken CancellationToken Cancellation token (checked between blocks). Returns IEnumerable MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, MachiningSession machiningSession, SessionProgress sessionProgress, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines machiningSession MachiningSession Session-scoped state shared across multiple RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, file-index counter). sessionProgress SessionProgress cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs SetAllSnapshotSyntaxEnabled(bool) Sets IsEnabled on every SnapshotSyntax reachable from NcSyntaxList (including those nested inside top-level BundleSyntax) to isEnabled. Callers that need finer control (per-section toggling, instance inspection) should iterate EnumerateSnapshotSyntaxs() directly. public void SetAllSnapshotSyntaxEnabled(bool isEnabled) Parameters isEnabled bool" + "summary": "Class SoftNcRunner Namespace Hi.NcParsers Assembly HiMech.dll Configurable NC Runner. public class SoftNcRunner : IControlRunner, IMakeXmlSource Inheritance object SoftNcRunner Implements IControlRunner IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SoftNcRunner() Creates an empty runner; populate the pipeline lists before use. public SoftNcRunner() SoftNcRunner(XElement, string, string, IProgress, object[]) Reconstructs a SoftNcRunner from a project XML element. Each pipeline list (NcDependencyList, Segmenter, NcInitializationList, NcSyntaxList, NcSemanticList) is rehydrated via XFactory. public SoftNcRunner(XElement src, string baseDirectory, string relFile, IProgress progress, object[] res = null) Parameters src XElement XML element previously produced by MakeXmlSource(string, string, bool). baseDirectory string Project base directory for resolving relative paths. relFile string Project file path relative to baseDirectory. progress IProgress Diagnostic sink propagated to nested factories. res object[] Optional ambient resources (e.g. ProjectApiVersion for legacy patches). Properties FanucNcRunner Brand preset for Fanuc — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner FanucNcRunner { get; } Property Value SoftNcRunner HeidenhainNcRunner Brand preset for Heidenhain — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner HeidenhainNcRunner { get; } Property Value SoftNcRunner MazakNcRunner Brand preset for Mazak — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner MazakNcRunner { get; } Property Value SoftNcRunner NcDependencyList External configuration providers consumed by syntaxes/semantics (machine axes, tool offsets, coordinate tables, block-skip flags, etc.). public List NcDependencyList { get; set; } Property Value List NcInitializationList Seeds the initial SyntaxPiece JSON state (e.g. home position, defaults). public List NcInitializationList { get; set; } Property Value List NcSemanticList Final-stage semantics that turn the last syntax layer into SourcedActEntry records consumed by the runtime. public List NcSemanticList { get; set; } Property Value List NcSyntaxList Ordered syntax pipeline. Each entry consumes the previous layer's SyntaxPiece stream and emits the next layer. public List NcSyntaxList { get; set; } Property Value List Segmenter Splits raw NC text into Sentence blocks. public ISegmenter Segmenter { get; set; } Property Value ISegmenter SiemensNcRunner Brand preset for Siemens — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner SiemensNcRunner { get; } Property Value SoftNcRunner SyntecNcRunner Brand preset for Syntec — composes a SoftNcRunner whose NcSyntaxList comes from DefaultSyntaxList. public static SoftNcRunner SyntecNcRunner { get; } Property Value SoftNcRunner XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods ConfigureByMachiningChain(IMachiningChain) Configures this SoftNcRunner to match the kinematic chain of a machine tool. Registers every axis present on the chain into the IMachineAxisConfig in NcDependencyList (linear or rotary, derived from whether the chain's transformer implements IDynamicRotation). When the chain carries any rotary axis, a NcKinematicsDependency is appended so that downstream syntaxes / semantics (e.g. G53.1, G68.2, McLinearMotionSemantic) can resolve orientation; its KinematicsProvider is intentionally left null — the owning project service wires it up after the solver instance is available (see LocalProjectService.BuildCoordinateConverter). public void ConfigureByMachiningChain(IMachiningChain chain) Parameters chain IMachiningChain The machining chain whose axes and kinematics the runner should match. No-op when null. EnumerateSnapshotSyntaxs() Enumerates every SnapshotSyntax reachable from NcSyntaxList, including those nested inside any top-level BundleSyntax's inner list. Yields in pipeline-execution order: each top-level slot in turn, and within a bundle slot the bundle's SyntaxList order. public IEnumerable EnumerateSnapshotSyntaxs() Returns IEnumerable FromLegacyNcEnvXml(XElement, IMachiningChain) Creates a SoftNcRunner from legacy HardNcEnv XML. Picks the brand-specific runner by the CncBrand element and populates dependencies from the legacy XML values. When a chain is provided, also calls ConfigureByMachiningChain(IMachiningChain) so the runner's axis configuration and kinematics dependency reflect the machine tool loaded alongside the legacy project. Remove this region when HardNcEnv is fully replaced. public static SoftNcRunner FromLegacyNcEnvXml(XElement ncEnvXml, IMachiningChain chain = null) Parameters ncEnvXml XElement The inner XML element of the legacy HardNcEnv. chain IMachiningChain Optional machining chain for axis/kinematics configuration. Returns SoftNcRunner A configured SoftNcRunner. GetSourcedActEntrysFromNode(LazyLinkedListNode, NcDiagnosticProgress, CancellationToken) Drives the NcSemanticList over the post-syntax SyntaxPiece stream starting at startNode, yielding a SourcedActEntry for each emitted IAct (or a single null-act entry when a semantic produces no acts but still updates the source SyntaxPiece). public IEnumerable GetSourcedActEntrysFromNode(LazyLinkedListNode startNode, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken) Parameters startNode LazyLinkedListNode First node to evaluate; iteration walks Next. ncDiagnosticProgress NcDiagnosticProgress Sink for semantic exceptions. cancellationToken CancellationToken Cancellation token (checked between blocks). Returns IEnumerable MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file. RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, MachiningSession machiningSession, SessionProgress sessionProgress, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines machiningSession MachiningSession Session-scoped state shared across multiple RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, file-index counter). sessionProgress SessionProgress cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs SetAllSnapshotSyntaxEnabled(bool) Sets IsEnabled on every SnapshotSyntax reachable from NcSyntaxList (including those nested inside top-level BundleSyntax) to isEnabled. Callers that need finer control (per-section toggling, instance inspection) should iterate EnumerateSnapshotSyntaxs() directly. public void SetAllSnapshotSyntaxEnabled(bool isEnabled) Parameters isEnabled bool" }, "api/Hi.NcParsers.SoftNcUtil.html": { "href": "api/Hi.NcParsers.SoftNcUtil.html", "title": "Class SoftNcUtil | HiAPI-C# 2025", - "summary": "Class SoftNcUtil Namespace Hi.NcParsers Assembly HiMech.dll JSON helpers for soft-NC blocks: vectors under Parsing, motion-term queries, flag grab/remove on raw text, and unparsed-line trimming. public static class SoftNcUtil Inheritance object SoftNcUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties RegexFlagPrefix Regex prefix pattern that matches word boundary, after digit, after whitespace, or at start of string. The whitespace/start-of-string alternatives are needed for non-word-character prefixes (e.g. Fanuc '#', Siemens '$'). public static string RegexFlagPrefix { get; } Property Value string Methods GetMachineStateDouble(JsonObject, string) Reads a numeric tag from a machine-state section (one written by a LogicSyntax / Semantic with explicit numeric values, not from the parser stage). Used by backward-walk lookback paths (ProgramXyzUtil FindPrevious*, FindPreviousState on Feedrate/SpindleSpeed/IsoLocalCoordinateOffset, modal arc-/linear-feedrate prev-block reads, etc.) where the data is supposed to be guaranteed numeric and any non-numeric is a HiAPIs codegen bug rather than an unevaluated user expression. Tag missing → returns null silently (the section may not have been written on a previous block; caller's ?? default chain handles it). Tag present and numeric → returns the value. Tag present but non-numeric → throws InvalidOperationException immediately. The stack trace anchors the bug at the read site (which is the right place to investigate — the originating block has already passed). Continuing with NaN/0 would silently propagate corrupt coordinates downstream and is more dangerous than crashing the run. Use GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) instead when reading from a parser- stage section (variable expressions on the current block deserve a soft diagnostic, not a hard crash). public static double? GetMachineStateDouble(this JsonObject section, string key) Parameters section JsonObject key string Returns double? GetMachineStateVec3d(JsonObject, string) Vec3d reader for machine-state sections (written by upstream LogicSyntaxes / Semantics with explicit numeric values). Section missing → returns null; individual missing X/Y/Z components fall through to NaN; a non-numeric value at any of X/Y/Z throws via GetMachineStateDouble(JsonObject, string) — non-numeric here is a HiAPIs codegen bug, not a user-facing unevaluated expression, and silently degrading to NaN/0 would propagate corrupt coordinates downstream. public static Vec3d GetMachineStateVec3d(JsonObject json, string sectionKey) Parameters json JsonObject sectionKey string Returns Vec3d GetOccupiedMotionEventForm(JsonObject) Reads the form on the current block's MotionEvent section, indicating that a motion event has already been authored on this block by an earlier-stage motion syntax. Returns null when no motion event is present on this block. Used by motion syntaxes to enforce mutual exclusion (only one motion event per block). Reads MotionEvent rather than MotionState because state is modally carried onto every block via ModalCarrySyntax and would always appear \"occupied\"; only the event section is sparse and meaningfully indicates an authored claim on this block. public static string GetOccupiedMotionEventForm(this JsonObject json) Parameters json JsonObject Returns string GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) Reads a numeric tag from a JSON object held on a SyntaxPiece (the Parsing tree, a previously-written modal section, or any sub-object thereof), with strict separation between “tag absent” and “tag present but not a number”. Tag missing → returns null silently. The caller's existing ?? default chain handles the \"axis not written\" / \"section absent\" case as before. Tag present and numeric → returns the value. Tag present but non-numeric → emits UnsupportedError(Sentence, string, string, object) (id VariableExpression--Unevaluated) and returns null. Two sources land here: Parser-stage residue — a Fanuc \"#124\", Heidenhain \"Q1\", Siemens \"R5\", or bracket expression \"[#100+5]\" stored as a string by ToFloat(string) / ToInteger(string) when the literal parse failed. Remediation: wire up the variable evaluator. Codegen residue — a previously-written modal section that somehow ended up with a non-numeric JsonValue. Remediation: file a HiAPIs bug. Severity is intentionally the same; reconfigurable diagnostic routing handles operator-vs-developer triage and a second error id would be cosmetic. Replaces the legacy idiom section[key]?.GetDouble() at every call site that consumes a numeric tag held on a SyntaxPiece. public static double? GetParsedDouble(this JsonObject section, string key, Sentence sentence, NcDiagnosticProgress diag) Parameters section JsonObject key string sentence Sentence diag NcDiagnosticProgress Returns double? GetVec3d(JsonObject, string, Vec3d, Sentence, NcDiagnosticProgress) Reads Vec3d from a sub-object with X/Y/Z keys, substituting each missing component (or a missing section) with the matching component of fallback. When sentence is non-null and diag is supplied, non-numeric X/Y/Z values are reported via GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress); when sentence is null, the diagnostic still fires but without a source-line anchor. public static Vec3d GetVec3d(JsonObject json, string sectionKey, Vec3d fallback, Sentence sentence, NcDiagnosticProgress diag) Parameters json JsonObject sectionKey string fallback Vec3d sentence Sentence diag NcDiagnosticProgress Returns Vec3d GetVec3d(JsonObject, string, Sentence, NcDiagnosticProgress) Read Vec3d from a sub-object with X/Y/Z keys. Returns null if the section or all three keys are missing; individual missing keys are filled with NaN. When sentence is non-null and diag is supplied, non-numeric X/Y/Z values are reported via GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) (id VariableExpression--Unevaluated); when sentence is null, the diagnostic still fires but without a source-line anchor (used by backward-walk / dump-reading callers that cannot tie the read to the current sentence). public static Vec3d GetVec3d(JsonObject json, string sectionKey, Sentence sentence, NcDiagnosticProgress diag) Parameters json JsonObject sectionKey string sentence Sentence diag NcDiagnosticProgress Returns Vec3d GrabDouble(ref string, string, bool) Grab double value with decimal point judgement: The text is changed by replacing tag and value to empty string. If enableIntegerShrink is true and no decimal point, the value should be scale by 0.001. public static double GrabDouble(ref string text, string tag, bool enableIntegerShrink) Parameters text string text tag string tag enableIntegerShrink bool If true and no decimal point exists, the value will be scaled by 0.001. Returns double double value GrabFlag(ref string, string) Grabs and removes a flag from the NC text. public static bool GrabFlag(ref string text, string regexTag) Parameters text string The NC text to search and modify. regexTag string The flag tag to search for. Returns bool True if the flag was found and removed; otherwise, false. GrabFlags(ref string, IEnumerable) Removes the first occurrence of any flag in tags from text (alternation regex). public static bool GrabFlags(ref string text, IEnumerable tags) Parameters text string tags IEnumerable Returns bool true if a match was removed. HasAnyFlag(string, IEnumerable) True if text contains any flag in flags as whole tokens. public static bool HasAnyFlag(string text, IEnumerable flags) Parameters text string flags IEnumerable Returns bool HasAnyFlag(string, string) True if text contains flag as a whole token (see RegexFlagPrefix). public static bool HasAnyFlag(string text, string flag) Parameters text string flag string Returns bool HasFlagInArray(JsonObject, string) Checks if a specific flag string exists in the Parsing.Flags JsonArray. public static bool HasFlagInArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string Returns bool ParseDouble(JsonNode) Parses a double from a JsonNode that may be a number or a string. Extends GetDouble(JsonNode) with string parsing support (needed for values from ParameterizedFlagSyntax which stores values as strings like “180”). Returns 0 if null or unparseable. public static double ParseDouble(this JsonNode node) Parameters node JsonNode Returns double RemoveFlagFromArray(JsonObject, string) Removes a specific flag string from the Parsing.Flags JsonArray. public static void RemoveFlagFromArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string SetAndTrimUnparsedText(JsonObject, string) Normalises UnparsedText (trim, drop blank-only lines) and removes the property when empty. public static void SetAndTrimUnparsedText(this JsonObject root, string unparsedText) Parameters root JsonObject Block JSON object. unparsedText string Raw tail text after structured fields were consumed. SetVec3d(JsonObject, string, Vec3d) Writes Vec3d to a sub-object under sectionKey, setting only the X/Y/Z keys. If the section already exists, other keys (e.g. A/B/C on a shared MachineCoordinate) are preserved; if it does not exist, a new sub-object is created. Upsert rather than replace so callers that write XYZ and ABC in separate stages (McXyzSyntax and McAbcSyntax) can cooperate on the same MachineCoordinateState section without clobbering each other. public static void SetVec3d(JsonObject json, string sectionKey, Vec3d v) Parameters json JsonObject sectionKey string v Vec3d" + "summary": "Class SoftNcUtil Namespace Hi.NcParsers Assembly HiMech.dll JSON helpers for soft-NC blocks: vectors under Parsing, motion-term queries, flag grab/remove on raw text, and unparsed-line trimming. public static class SoftNcUtil Inheritance object SoftNcUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties RegexFlagPrefix Regex prefix pattern that matches word boundary, after digit, after whitespace, or at start of string. The whitespace/start-of-string alternatives are needed for non-word-character prefixes (e.g. Fanuc '#', Siemens '$'). public static string RegexFlagPrefix { get; } Property Value string Methods GetMachineStateDouble(JsonObject, string) Reads a numeric tag from a machine-state section (one written by a LogicSyntax / Semantic with explicit numeric values, not from the parser stage). Used by backward-walk lookback paths (ProgramXyzUtil FindPrevious*, FindPreviousState on Feedrate/SpindleSpeed/IsoLocalCoordinateOffset, modal arc-/linear-feedrate prev-block reads, etc.) where the data is supposed to be guaranteed numeric and any non-numeric is a HiAPIs codegen bug rather than an unevaluated user expression. Tag missing → returns null silently (the section may not have been written on a previous block; caller's ?? default chain handles it). Tag present and numeric → returns the value. Tag present but non-numeric → throws InvalidOperationException immediately. The stack trace anchors the bug at the read site (which is the right place to investigate — the originating block has already passed). Continuing with NaN/0 would silently propagate corrupt coordinates downstream and is more dangerous than crashing the run. Use GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) instead when reading from a parser- stage section (variable expressions on the current block deserve a soft diagnostic, not a hard crash). public static double? GetMachineStateDouble(this JsonObject section, string key) Parameters section JsonObject key string Returns double? GetMachineStateVec3d(JsonObject, string) Vec3d reader for machine-state sections (written by upstream LogicSyntaxes / Semantics with explicit numeric values). Section missing → returns null; individual missing X/Y/Z components fall through to NaN; a non-numeric value at any of X/Y/Z throws via GetMachineStateDouble(JsonObject, string) — non-numeric here is a HiAPIs codegen bug, not a user-facing unevaluated expression, and silently degrading to NaN/0 would propagate corrupt coordinates downstream. public static Vec3d GetMachineStateVec3d(JsonObject json, string sectionKey) Parameters json JsonObject sectionKey string Returns Vec3d GetOccupiedMotionEventForm(JsonObject) Reads the form on the current block's MotionEvent section, indicating that a motion event has already been authored on this block by an earlier-stage motion syntax. Returns null when no motion event is present on this block. Used by motion syntaxes to enforce mutual exclusion (only one motion event per block). Reads MotionEvent rather than MotionState because state is modally carried onto every block via ModalCarrySyntax and would always appear \"occupied\"; only the event section is sparse and meaningfully indicates an authored claim on this block. public static string GetOccupiedMotionEventForm(this JsonObject json) Parameters json JsonObject Returns string GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) Reads a numeric tag from a JSON object held on a SyntaxPiece (the Parsing tree, a previously-written modal section, or any sub-object thereof), with strict separation between “tag absent” and “tag present but not a number”. Tag missing → returns null silently. The caller's existing ?? default chain handles the \"axis not written\" / \"section absent\" case as before. Tag present and numeric → returns the value. Tag present but non-numeric → emits UnsupportedError(ISentenceCarrier, string, string, object) (id VariableExpression--Unevaluated) and returns null. Two sources land here: Parser-stage residue — a Fanuc \"#124\", Heidenhain \"Q1\", Siemens \"R5\", or bracket expression \"[#100+5]\" stored as a string by ToFloat(string) / ToInteger(string) when the literal parse failed. Remediation: wire up the variable evaluator. Codegen residue — a previously-written modal section that somehow ended up with a non-numeric JsonValue. Remediation: file a HiAPIs bug. Severity is intentionally the same; reconfigurable diagnostic routing handles operator-vs-developer triage and a second error id would be cosmetic. Replaces the legacy idiom section[key]?.GetDouble() at every call site that consumes a numeric tag held on a SyntaxPiece. public static double? GetParsedDouble(this JsonObject section, string key, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters section JsonObject key string sentenceCarrier ISentenceCarrier diag NcDiagnosticProgress Returns double? GetVec3d(JsonObject, string, Vec3d, ISentenceCarrier, NcDiagnosticProgress) Reads Vec3d from a sub-object with X/Y/Z keys, substituting each missing component (or a missing section) with the matching component of fallback. When sentenceCarrier is non-null and diag is supplied, non-numeric X/Y/Z values are reported via GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress); when sentenceCarrier is null, the diagnostic still fires but without a source-line anchor. public static Vec3d GetVec3d(JsonObject json, string sectionKey, Vec3d fallback, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters json JsonObject sectionKey string fallback Vec3d sentenceCarrier ISentenceCarrier diag NcDiagnosticProgress Returns Vec3d GetVec3d(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) Read Vec3d from a sub-object with X/Y/Z keys. Returns null if the section or all three keys are missing; individual missing keys are filled with NaN. When sentenceCarrier is non-null and diag is supplied, non-numeric X/Y/Z values are reported via GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) (id VariableExpression--Unevaluated); when sentenceCarrier is null, the diagnostic still fires but without a source-line anchor (used by backward-walk / dump-reading callers that cannot tie the read to the current sentence). public static Vec3d GetVec3d(JsonObject json, string sectionKey, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag) Parameters json JsonObject sectionKey string sentenceCarrier ISentenceCarrier diag NcDiagnosticProgress Returns Vec3d GrabDouble(ref string, string, bool) Grab double value with decimal point judgement: The text is changed by replacing tag and value to empty string. If enableIntegerShrink is true and no decimal point, the value should be scale by 0.001. public static double GrabDouble(ref string text, string tag, bool enableIntegerShrink) Parameters text string text tag string tag enableIntegerShrink bool If true and no decimal point exists, the value will be scaled by 0.001. Returns double double value GrabFlag(ref string, string) Grabs and removes a flag from the NC text. public static bool GrabFlag(ref string text, string regexTag) Parameters text string The NC text to search and modify. regexTag string The flag tag to search for. Returns bool True if the flag was found and removed; otherwise, false. GrabFlags(ref string, IEnumerable) Removes the first occurrence of any flag in tags from text (alternation regex). public static bool GrabFlags(ref string text, IEnumerable tags) Parameters text string tags IEnumerable Returns bool true if a match was removed. HasAnyFlag(string, IEnumerable) True if text contains any flag in flags as whole tokens. public static bool HasAnyFlag(string text, IEnumerable flags) Parameters text string flags IEnumerable Returns bool HasAnyFlag(string, string) True if text contains flag as a whole token (see RegexFlagPrefix). public static bool HasAnyFlag(string text, string flag) Parameters text string flag string Returns bool HasFlagInArray(JsonObject, string) Checks if a specific flag string exists in the Parsing.Flags JsonArray. public static bool HasFlagInArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string Returns bool ParseDouble(JsonNode) Parses a double from a JsonNode that may be a number or a string. Extends GetDouble(JsonNode) with string parsing support (needed for values from ParameterizedFlagSyntax which stores values as strings like “180”). Returns 0 if null or unparseable. public static double ParseDouble(this JsonNode node) Parameters node JsonNode Returns double RemoveFlagFromArray(JsonObject, string) Removes a specific flag string from the Parsing.Flags JsonArray. public static void RemoveFlagFromArray(this JsonObject parsing, string flag) Parameters parsing JsonObject flag string SetAndTrimUnparsedText(JsonObject, string) Normalises UnparsedText (trim, drop blank-only lines) and removes the property when empty. public static void SetAndTrimUnparsedText(this JsonObject root, string unparsedText) Parameters root JsonObject Block JSON object. unparsedText string Raw tail text after structured fields were consumed. SetVec3d(JsonObject, string, Vec3d) Writes Vec3d to a sub-object under sectionKey, setting only the X/Y/Z keys. If the section already exists, other keys (e.g. A/B/C on a shared MachineCoordinate) are preserved; if it does not exist, a new sub-object is created. Upsert rather than replace so callers that write XYZ and ABC in separate stages (McXyzSyntax and McAbcSyntax) can cooperate on the same MachineCoordinateState section without clobbering each other. public static void SetVec3d(JsonObject json, string sectionKey, Vec3d v) Parameters json JsonObject sectionKey string v Vec3d" }, "api/Hi.NcParsers.Syntaxs.BundleSyntax.html": { "href": "api/Hi.NcParsers.Syntaxs.BundleSyntax.html", "title": "Class BundleSyntax | HiAPI-C# 2025", - "summary": "Class BundleSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Depth-First Sequential Syntaxes management. It saves space by save the LazyLinkedLists from each syntax to only one LazyLinkedLists in SoftNcRunner to get better performance. If the INcSyntax only edit the current node itself, those self-editing INcSyntax without looks-forward is suitable to put into the BundleSyntax. public class BundleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BundleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BundleSyntax() Creates an empty bundle (name defaults to the type name BundleSyntax). public BundleSyntax() BundleSyntax(IEnumerable) Creates a bundle with default Name from an ordered syntax list. public BundleSyntax(IEnumerable syntaxes) Parameters syntaxes IEnumerable BundleSyntax(string, IEnumerable) Creates a named bundle wrapping the given syntax list. public BundleSyntax(string name, IEnumerable syntaxes) Parameters name string syntaxes IEnumerable BundleSyntax(XElement, string, string, IProgress) Loads nested in-situ syntax elements from XML under Name. public BundleSyntax(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement baseDirectory string relFile string progress IProgress Properties Name Syntax kind name (typically the concrete type name). public string Name { get; set; } Property Value string SyntaxList Child syntaxes executed in registration order within this bundle. public List SyntaxList { get; } Property Value List XName XML element name for Regs registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." + "summary": "Class BundleSyntax Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll Depth-First Sequential Syntaxes management. It saves space by save the LazyLinkedLists from each syntax to only one LazyLinkedLists in SoftNcRunner to get better performance. If the INcSyntax only edit the current node itself, those self-editing INcSyntax without looks-forward is suitable to put into the BundleSyntax. public class BundleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object BundleSyntax Implements ISituNcSyntax INcSyntax IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors BundleSyntax() Creates an empty bundle (name defaults to the type name BundleSyntax). public BundleSyntax() BundleSyntax(IEnumerable) Creates a bundle with default Name from an ordered syntax list. public BundleSyntax(IEnumerable syntaxes) Parameters syntaxes IEnumerable BundleSyntax(string, IEnumerable) Creates a named bundle wrapping the given syntax list. public BundleSyntax(string name, IEnumerable syntaxes) Parameters name string syntaxes IEnumerable BundleSyntax(XElement, string, string, IProgress) Loads nested in-situ syntax elements from XML under Name. public BundleSyntax(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement baseDirectory string relFile string progress IProgress Properties Name Syntax kind name (typically the concrete type name). public string Name { get; set; } Property Value string SyntaxList Child syntaxes executed in registration order within this bundle. public List SyntaxList { get; } Property Value List XName XML element name for Generators registration. public static string XName { get; } Property Value string Methods Build(LazyLinkedListNode, List, NcDiagnosticProgress) Build syntax arrangement into the syntaxPieceNode in-place. public void Build(LazyLinkedListNode syntaxPieceNode, List ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress) Parameters syntaxPieceNode LazyLinkedListNode ncDependencyList List ncDiagnosticProgress NcDiagnosticProgress MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string The base directory for resolving relative paths relFile string The relative file path for the XML source exhibitionOnly bool if true, the extended file creation is suppressed. Returns XElement An XML element representing the object's state Remarks For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied. The baseDirectory is typically the folder at the nearest configuration file folder. Since the folder can be moving with the configuration file." }, "api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html": { "href": "api/Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html", @@ -4837,7 +4977,7 @@ "api/Hi.NcParsers.Syntaxs.SyntaxPiece.html": { "href": "api/Hi.NcParsers.Syntaxs.SyntaxPiece.html", "title": "Class SyntaxPiece | HiAPI-C# 2025", - "summary": "Class SyntaxPiece Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll One NC block's source line paired with its parsed JSON payload during soft-NC processing. public class SyntaxPiece : IGetSentence Inheritance object SyntaxPiece Implements IGetSentence Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The design pattern of Sentence and JsonObject are one-one mapping. JSON value type convention: Prefer base types (double, int) over string for numeric values in JsonObject. This applies to both parsing syntaxes and logic syntaxes. Strings should only be used when the value is genuinely textual (e.g., macro variable references like \"#1\", \"Q2\", coordinate IDs like \"G54\") or when the value cannot be parsed to a number. Use FloatTagValueSyntax, IntegerTagValueSyntax, or FloatParamPrefixes / IntParamPrefixes to store typed values at parse time. Constructors SyntaxPiece(Sentence, JsonObject) Creates a piece binding sentence to jsonObject. public SyntaxPiece(Sentence sentence, JsonObject jsonObject) Parameters sentence Sentence jsonObject JsonObject Properties JsonObject Structured parse result built by syntax passes. public JsonObject JsonObject { get; set; } Property Value JsonObject Sentence Indexed source line and block text for this piece. public Sentence Sentence { get; set; } Property Value Sentence SentenceIndex 0-based ordinal in NC execution order. Stamped at piece construction time by GetSyntaxPieces(ISegmenter, LazyLinkedList, int, NcDiagnosticProgress, CancellationToken) from the destination layers[0]'s running count, so subprogram pieces inlined by SubProgramCallSyntax get sequential indices that interleave correctly between host blocks. Useful as a cross-process alignment key (messages, ClStripPos, MachiningStep) — unlike FileLineUtil.MixedIndex(), it reflects execution order rather than (FileIndex, LineIndex) source order. public int SentenceIndex { get; set; } Property Value int Methods GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence ToString() Serialize with Hi.NcParsers.Syntaxs.NcSyntaxUtil.Options to support NaN/Infinity. public override string ToString() Returns string" + "summary": "Class SyntaxPiece Namespace Hi.NcParsers.Syntaxs Assembly HiMech.dll One NC block's source line paired with its parsed JSON payload during soft-NC processing. public class SyntaxPiece : ISentenceCarrier, IGetSentence, ISentenceIndexed Inheritance object SyntaxPiece Implements ISentenceCarrier IGetSentence ISentenceIndexed Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The design pattern of Sentence and JsonObject are one-one mapping. JSON value type convention: Prefer base types (double, int) over string for numeric values in JsonObject. This applies to both parsing syntaxes and logic syntaxes. Strings should only be used when the value is genuinely textual (e.g., macro variable references like \"#1\", \"Q2\", coordinate IDs like \"G54\") or when the value cannot be parsed to a number. Use FloatTagValueSyntax, IntegerTagValueSyntax, or FloatParamPrefixes / IntParamPrefixes to store typed values at parse time. Constructors SyntaxPiece(Sentence, JsonObject, int) Creates a piece binding sentence to jsonObject with its execution-order sentenceIndex. public SyntaxPiece(Sentence sentence, JsonObject jsonObject, int sentenceIndex) Parameters sentence Sentence jsonObject JsonObject sentenceIndex int Properties JsonObject Structured parse result built by syntax passes. public JsonObject JsonObject { get; set; } Property Value JsonObject Sentence Indexed source line and block text for this piece. public Sentence Sentence { get; set; } Property Value Sentence SentenceIndex 0-based ordinal in NC execution order. Stamped at piece construction time by GetSyntaxPieces(ISegmenter, IEnumerable, int, NcDiagnosticProgress, CancellationToken) from the destination layers[0]'s running count, so subprogram pieces inlined by SubProgramCallSyntax get sequential indices that interleave correctly between host blocks. Useful as a cross-process alignment key (messages, ClStripPos, MachiningStep) — unlike FileLineUtil.MixedIndex(), it reflects execution order rather than (FileIndex, LineIndex) source order. Required at construction: the index is identity, not optional metadata. Read-only after construction; the pipeline guarantees one stamping per piece at the wrapping chokepoint. public int SentenceIndex { get; } Property Value int Methods GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence ToString() Serialize with Hi.NcParsers.Syntaxs.NcSyntaxUtil.Options to support NaN/Infinity. public override string ToString() Returns string" }, "api/Hi.NcParsers.Syntaxs.SyntaxStageKeys.html": { "href": "api/Hi.NcParsers.Syntaxs.SyntaxStageKeys.html", @@ -4867,7 +5007,7 @@ "api/Hi.NcParsers.html": { "href": "api/Hi.NcParsers.html", "title": "Namespace Hi.NcParsers | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers Classes NcDiagnostic A structured diagnostic from the SoftNcRunner pipeline, designed for IProgress consumption. Id is composed as {Primary}-{Secondary}--{Abbrev} (e.g., Cycle-Peck--BadPeckQ, Syntax-Build--Exception). For irregular cases that don't fit the pattern, use a custom string. NcDiagnosticProgress Helper that emits NcDiagnostic records via an IProgress sink. Provides one method per (NcDiagnosticCategory, NcDiagnosticSeverity) pair, each with an optional Sentence overload locating the issue in the NC source. Sentence A small NC block for one or several lines. SoftNcRunner Configurable NC Runner. SoftNcUtil JSON helpers for soft-NC blocks: vectors under Parsing, motion-term queries, flag grab/remove on raw text, and unparsed-line trimming. Interfaces IGetSentence Abstraction for a source that carries a Sentence. Enums NcDiagnosticCategory Diagnostic category of an NC diagnostic. System + Error → exception/bug, unconsidered case Unsupported + Warning → known unsupported, likely harmless Unsupported + Error → known unsupported, likely matters Validation + Warning → manufacturing/physics may be unfeasible Validation + Error → manufacturing/physics is unfeasible Configuration + Message → dependency/config applied, informational event (e.g. a block skipped by an enabled IBlockSkipConfig layer) Configuration + Warning → dependency/config missing, using fallback Configuration + Error → dependency/config missing, cannot proceed NcDiagnosticSeverity Importance level of an NC diagnostic. Combined with NcDiagnosticCategory to form the full diagnostic meaning (e.g., Unsupported + Warning)." + "summary": "Namespace Hi.NcParsers Classes IndexedSentence Minimal ISentenceCarrier pairing a Sentence with its execution-order SentenceIndex. Use when there is no richer host object that already carries the sentence — e.g. CSV-driven runs that go straight from an input line to a Sentence without a SyntaxPiece wrapper. NcDiagnostic A structured diagnostic from the SoftNcRunner pipeline, designed for IProgress consumption. Id is composed as {Primary}-{Secondary}--{Abbrev} (e.g., Cycle-Peck--BadPeckQ, Syntax-Build--Exception). For irregular cases that don't fit the pattern, use a custom string. NcDiagnosticProgress Helper that emits NcDiagnostic records via an IProgress sink. Provides one method per (NcDiagnosticCategory, NcDiagnosticSeverity) pair, each with an optional Sentence overload locating the issue in the NC source. Sentence A small NC block for one or several lines. SoftNcRunner Configurable NC Runner. SoftNcUtil JSON helpers for soft-NC blocks: vectors under Parsing, motion-term queries, flag grab/remove on raw text, and unparsed-line trimming. Interfaces IGetSentence Abstraction for a source that carries a Sentence. ISentenceCarrier Carries a reference to a source Sentence together with its execution-order SentenceIndex. Used as the cross-process alignment carrier for diagnostics, messages, ClStripPos, MachiningStep, etc. — both the source content (via GetSentence()) and the execution-order position (via SentenceIndex) are available without needing two separate references. ISentenceIndexed Abstraction for an object that carries a SentenceIndex — a 0-based ordinal of its source Sentence in NC execution order. Use as a cross-process alignment key (messages, ClStripPos, MachiningStep, etc.) when source order (MixedIndex(IFileLineIndex)) is not enough because SubProgram inline reorders blocks relative to (FileIndex, LineIndex). Enums NcDiagnosticCategory Diagnostic category of an NC diagnostic. System + Error → exception/bug, unconsidered case Unsupported + Warning → known unsupported, likely harmless Unsupported + Error → known unsupported, likely matters Validation + Warning → manufacturing/physics may be unfeasible Validation + Error → manufacturing/physics is unfeasible Configuration + Message → dependency/config applied, informational event (e.g. a block skipped by an enabled IBlockSkipConfig layer) Configuration + Warning → dependency/config missing, using fallback Configuration + Error → dependency/config missing, cannot proceed NcDiagnosticSeverity Importance level of an NC diagnostic. Combined with NcDiagnosticCategory to form the full diagnostic meaning (e.g., Unsupported + Warning)." }, "api/Hi.Numerical.Acts.ActActualTime.html": { "href": "api/Hi.Numerical.Acts.ActActualTime.html", @@ -5117,7 +5257,7 @@ "api/Hi.Numerical.FilePlayers.CsvRunner.html": { "href": "api/Hi.Numerical.FilePlayers.CsvRunner.html", "title": "Class CsvRunner | HiAPI-C# 2025", - "summary": "Class CsvRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Provides functionality for running and processing csv lines. public class CsvRunner : IControlRunner Inheritance object CsvRunner Implements IControlRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunner(LocalProjectService) Initializes a new instance. public CsvRunner(LocalProjectService localProjectService) Parameters localProjectService LocalProjectService The local project service. Properties Config Configuration for CSV Runner. public CsvRunnerConfig Config { get; set; } Property Value CsvRunnerConfig Methods Reset() Reset runtime data. public void Reset() RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, MachiningSession machiningSession, SessionProgress sessionMessageHost, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines machiningSession MachiningSession Session-scoped state shared across multiple RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, file-index counter). sessionMessageHost SessionProgress cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs" + "summary": "Class CsvRunner Namespace Hi.Numerical.FilePlayers Assembly HiNc.dll Provides functionality for running and processing csv lines. public class CsvRunner : IControlRunner Inheritance object CsvRunner Implements IControlRunner Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CsvRunner(LocalProjectService) Initializes a new instance. public CsvRunner(LocalProjectService localProjectService) Parameters localProjectService LocalProjectService The local project service. Properties Config Configuration for CSV Runner. public CsvRunnerConfig Config { get; set; } Property Value CsvRunnerConfig Methods Reset() Reset runtime data, including the execution-order Hi.Numerical.FilePlayers.CsvRunner.sentenceIndex counter. Called from LocalProjectService.ResetRuntime only — session stop (EndSession) deliberately does not reset the runner. public void Reset() RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) Runs raw Control lines and yields source sentence and Act pairs. public IEnumerable RunControlLines(string relFilePath, IEnumerable lines, MachiningSession machiningSession, SessionProgress sessionMessageHost, CancellationToken cancellationToken) Parameters relFilePath string The relative path of the control file lines IEnumerable The enumerable collection of command (control code) lines machiningSession MachiningSession Session-scoped state shared across multiple RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, file-index counter). sessionMessageHost SessionProgress cancellationToken CancellationToken Cancellation token to cancel the operation Returns IEnumerable Enumerable of source sentence and Act pairs" }, "api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html": { "href": "api/Hi.Numerical.FilePlayers.CsvRunnerConfig.html", @@ -5152,7 +5292,7 @@ "api/Hi.Numerical.HardNcLine.html": { "href": "api/Hi.Numerical.HardNcLine.html", "title": "Class HardNcLine | HiAPI-C# 2025", - "summary": "Class HardNcLine Namespace Hi.Numerical Assembly HiUniNc.dll Represents a line in the NC program with its associated data and operations. public class HardNcLine : IIndexedFileLine, IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex, IFlagText, IGetSentence Inheritance object HardNcLine Implements IIndexedFileLine IFileLine IFileLineIndex IGetIndexedFileLine IGetFileLineIndex IFlagText IGetSentence Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) HardNcUtil.IsFlagChanging(HardNcLine, HardNcLine, NcFlag) HardNcUtil.IsFlagChanging(HardNcLine, HardNcLine, NcFlag, bool) HardNcUtil.IsFlagKeeping(HardNcLine, HardNcLine, NcFlag, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, out NcNoteCache, IProgress) Ctor from the reference HardNcLine. public HardNcLine(HardNcEnv ncEnv, IndexedFileLine fileLine, HardNcLine preNcLine, out NcNoteCache ncNoteCache, IProgress progress) Parameters ncEnv HardNcEnv NC environment fileLine IndexedFileLine file line preNcLine HardNcLine reference HardNcLine that this HardNcLine copy from. If previous HardNcLine is not null, apply previous HardNcLine. ncNoteCache NcNoteCache Output NC note cache progress IProgress Message host for warnings HardNcLine(HardNcEnv, IProgress) Ctor for initial state. public HardNcLine(HardNcEnv ncEnv, IProgress messageHost) Parameters ncEnv HardNcEnv messageHost IProgress Properties ArcNcArg NC arguments for arc commands. public ArcNcArg ArcNcArg { get; set; } Property Value ArcNcArg CoordinateInterpolationMode Gets the current coordinate interpolation mode (Cartesian or Polar). public CoordinateInterpolationMode CoordinateInterpolationMode { get; } Property Value CoordinateInterpolationMode F F. Feedrate on NC code. Note that this may not be the working feedrate. Some NC codes like G00 and G28 doesnt use F code. public double F { get; set; } Property Value double Remarks According to Fanuc manual, the default F is zero. Feedrate_mmdmin Feedrate on NC code in current mode in mm/min. See F. public double Feedrate_mmdmin { get; set; } Property Value double Feedrate_mmds Feedrate on NC code in current mode in mm/sec. public double Feedrate_mmds { get; set; } Property Value double FileIndex File Index. Start on 0. public int FileIndex { get; } Property Value int FileNo Gets the file number. [Present(\"File Number\", \"FileNo\", PhysicsUnit.None, \"G\")] public int FileNo { get; } Property Value int FilePath File path. [Present(\"File\", \"File\", PhysicsUnit.None, \"G\")] public string FilePath { get; } Property Value string FlagsText Gets a string representation of the active NC flags for this line. public string FlagsText { get; } Property Value string G28Arg Arguments for G28 commands. public G28Arg G28Arg { get; set; } Property Value G28Arg G52_Xyz Local coordinate system translation. public Vec3d G52_Xyz { get; set; } Property Value Vec3d G54SeriesCoordinateNum1000 Faunc Group14 value. Note that Heidenhain Datum shift is set by DatumTableId. public int G54SeriesCoordinateNum1000 { get; set; } Property Value int Group07NcArg Arguments for Group07 NC commands (tool radius compensation). public Group07NcArg Group07NcArg { get; set; } Property Value Group07NcArg Group07_D Radius compensation ID. Note that in Siemens controller, each tool ID has several D entry. public int Group07_D { get; set; } Property Value int Group08_H Height compensation ID. For Siemens Traori, the value is Tool ID. For Heidenhain, the value is Tool ID. public int Group08_H { get; set; } Property Value int Group09NcArg NC Argument of NC Group09. public Group09NcArg Group09NcArg { get; set; } Property Value Group09NcArg HeidenhainBlockCacheArg Heidenhain block cache arguments for various Heidenhain commands. public IHeidenhainBlockCacheArg HeidenhainBlockCacheArg { get; set; } Property Value IHeidenhainBlockCacheArg HeidenhainCycleDef247Q339 DATUM SETTING DATUM Number. public int HeidenhainCycleDef247Q339 { get; set; } Property Value int HeidenhainCycleDef7Arg Arguments for Heidenhain Cycle Definition 7 (datum shift). public HeidenhainCycleDef7Arg HeidenhainCycleDef7Arg { get; set; } Property Value HeidenhainCycleDef7Arg HeidenhainM140MB HeidenhainM140(Retract the tool) MB value. MB is the retraction height. double.positiveInf is [MB MAX]. One shot command. public double HeidenhainM140MB { get; set; } Property Value double HeidenhainQMacroMap Dictionary mapping Q macro numbers to their string values for Heidenhain controllers. public Dictionary HeidenhainQMacroMap { get; set; } Property Value Dictionary HeidenhainToolAxisDir Direction of the tool axis for Heidenhain controllers. public int HeidenhainToolAxisDir { get; set; } Property Value int IndexedFileLine The file line information associated with this NC line. public IndexedFileLine IndexedFileLine { get; } Property Value IndexedFileLine IsAbsolutePositioning Gets a value indicating whether absolute positioning (G90) is active. public bool IsAbsolutePositioning { get; } Property Value bool IsHeightCompensationEnabled Gets a value indicating whether height compensation is enabled. public bool IsHeightCompensationEnabled { get; } Property Value bool IsOnArcCommand Gets a value indicating whether an arc command (G02 or G03) is active. public bool IsOnArcCommand { get; } Property Value bool IsPathPrepared Gets a value indicating whether the path is prepared (no radius compensation). public bool IsPathPrepared { get; } Property Value bool IsRadiusCompensationEnabled Gets a value indicating whether radius compensation is enabled. public bool IsRadiusCompensationEnabled { get; } Property Value bool IsToolCenterPointManagementEnabled Gets a value indicating whether tool center point management is enabled. public bool IsToolCenterPointManagementEnabled { get; } Property Value bool Line The line. [Present(\"Line\", \"Line\", PhysicsUnit.None, \"G\")] public string Line { get; } Property Value string LineIndex Line Index. Start on 0. public int LineIndex { get; } Property Value int LineNo Gets the line number. [Present(\"Line Number\", \"LineNo\", PhysicsUnit.None, \"G\")] public int LineNo { get; } Property Value int MachiningFeedrate_mmdmin Machining Feedrate on NC code in machining mode (such as G01,G02,G03 but not G00) in mm/min. public double MachiningFeedrate_mmdmin { get; set; } Property Value double MachiningFeedrate_mmds Machining Feedrate on NC code in machining mode (such as G01,G02,G03 but not G00) in mm/sec. public double MachiningFeedrate_mmds { get; set; } Property Value double McAbc_deg Gets or sets the machine ABC coordinates in degrees. public Vec3d McAbc_deg { get; set; } Property Value Vec3d McAbc_rad Machine coordinates in ABC format (radians). public Vec3d McAbc_rad { get; } Property Value Vec3d McXyz Gets or sets the machine coordinate XYZ values. public Vec3d McXyz { get; } Property Value Vec3d McXyzabc Machine coordinate ( with side radius compensation if existed). Point is XYZ. the unit is mm. Normal is ABC. the unit is radian. public DVec3d McXyzabc { get; } Property Value DVec3d NcFlagBitArray Internal Used. public BitArray NcFlagBitArray { get; } Property Value BitArray PausingNcArg public PausingNcArg PausingNcArg { get; set; } Property Value PausingNcArg Remarks Since this is base on OneShot Flag, so here has no copy ctor. PolarEntry Data structure for polar coordinates entry. public PolarEntry PolarEntry { get; set; } Property Value PolarEntry PreparationT Tool ID for preparation. public int PreparationT { get; set; } Property Value int ProgramOrthogonalPlaneNormal The orthogonal plane transform after tilting plane transform. Include G17, G18, G19 and plane of called G12p1. public Vec3d ProgramOrthogonalPlaneNormal { get; } Property Value Vec3d ProgramPos ProgramPos can be cartesian XYZ or polar XCZ with radius-based X, depends on CoordinateInterpolationMode. public Vec3d ProgramPos { get; } Property Value Vec3d ProgramXyz XYZ in Feature Coordinate. Cartesian Program Position XYZ, Abs Program Position (as G90 position). NC coordinate position is the position processed by modal flags. NC coordinate position is the position after radius compensation. The NC(Program) coordinate position is comprehensible by User. MC NC conversion may raise floating error. The floating error raise the cutting force issue, especially for bottom cutting force. Hence the NC values have to be memorized. public Vec3d ProgramXyz { get; } Property Value Vec3d Remarks NC is the better source property than MC. Ex. a NC line command: X100. The Y and Z value may vary if using MC converting back to NC. The error of Y and Z will keeps accumulating until the next explicit YZ command assignment. The error maybe up to 3e-5 in current case. the bounding box size of the case is not large (TT.20230815). Also note that if using Arc command for a complete circle, the begin NC XYZ and the end NC XYZ have to be equaled. Otherwise, it will become only a very small arc rather than the circle. So be care that do not change the NC XYZ if not needed. RadiusCompensationBuf Internal use. public RadiusCompensationBuf RadiusCompensationBuf { get; set; } Property Value RadiusCompensationBuf RapidFeedrate_mmdmin Rapid Feedrate on NC code in rapid mode (such as G00 but not G01,G02,G03) in mm/min. public double RapidFeedrate_mmdmin { get; set; } Property Value double RapidFeedrate_mmds Rapid Feedrate on NC code in rapid mode (such as G00 but not G01,G02,G03) in mm/sec. public double RapidFeedrate_mmds { get; set; } Property Value double S S. Spindle speed. public int S { get; set; } Property Value int SpindleSpeed_radds Spindle speed in radian/s. public double SpindleSpeed_radds { get; set; } Property Value double SpindleSpeed_rpm Spindle speed in RPM. public double SpindleSpeed_rpm { get; set; } Property Value double T Current equiped Tool ID. public int T { get; set; } Property Value int TiltPlaneNcArg Arguments related to tilted plane operations. public ITiltPlaneNcArg TiltPlaneNcArg { get; set; } Property Value ITiltPlaneNcArg Methods GetAttacherMat(HardNcEnv) Gets the attacher transformation matrix for the current machine coordinates. public Mat4d GetAttacherMat(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv The NC environment. Returns Mat4d The attacher transformation matrix. GetCompensationHeight(HardNcEnv, IProgress) Gets the tool height compensation value for this NC line. public double GetCompensationHeight(HardNcEnv ncEnv, IProgress messageHost) Parameters ncEnv HardNcEnv NC environment messageHost IProgress Message host for warnings Returns double Height compensation value GetCompensationRadius(CncBrand, MillingToolOffsetTable, IProgress) Gets the tool radius compensation value for this NC line. public double GetCompensationRadius(CncBrand cncBrand, MillingToolOffsetTable millingToolOffsetTable, IProgress messageHost) Parameters cncBrand CncBrand CNC brand millingToolOffsetTable MillingToolOffsetTable Milling tool offset table messageHost IProgress Message host for warnings Returns double Radius compensation value GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetG5xCoordinateOffset(HardNcEnv) Gets the G5x coordinate offset for this NC line. public Vec3d GetG5xCoordinateOffset(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv NC environment Returns Vec3d The G5x coordinate offset vector GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. GetMcByProgramPos(Vec3d, HardNcEnv, NcNoteCache, IProgress, out Vec3d) Internal Use. public DVec3d GetMcByProgramPos(Vec3d programPos, HardNcEnv ncEnv, NcNoteCache ncNoteCache, IProgress messageHost, out Vec3d programXyz) Parameters programPos Vec3d ncEnv HardNcEnv ncNoteCache NcNoteCache messageHost IProgress programXyz Vec3d Returns DVec3d GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence GetSourceCommand() public IIndexedFileLine GetSourceCommand() Returns IIndexedFileLine GetTiltMat4d(HardNcEnv, out Mat4d) Internal Use Only. public bool? GetTiltMat4d(HardNcEnv ncEnv, out Mat4d tableToFeatureTransform) Parameters ncEnv HardNcEnv NC environment. tableToFeatureTransform Mat4d Transform from NC to Table without tool compensation and linear coordinate offset (such as G55,G56..). Returns bool? True if G68.2 is successfully applied, false if not, and null if not applicable. HasSyntaxXyz(HardNcEnv) Determines whether the line contains syntactic XYZ coordinates. public bool HasSyntaxXyz(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv NC environment Returns bool True if syntactic XYZ coordinates are present; otherwise, false. RebuildByMc(HardNcEnv, DVec3d, NcNoteCache, IProgress) Internal Use Only. For NC opt. public void RebuildByMc(HardNcEnv ncEnv, DVec3d mc, NcNoteCache ncNoteCache, IProgress messageHost) Parameters ncEnv HardNcEnv NC environment. mc DVec3d MC coordinates. ncNoteCache NcNoteCache NC line cache. messageHost IProgress Message host for logging and reporting. RebuildByProgramXyz(HardNcEnv, Vec3d, NcNoteCache, IProgress) Internal Use Only. For NC opt. public void RebuildByProgramXyz(HardNcEnv ncEnv, Vec3d programXyz, NcNoteCache ncNoteCache, IProgress messageHost) Parameters ncEnv HardNcEnv NC environment. programXyz Vec3d Program XYZ coordinates. ncNoteCache NcNoteCache NC note cache. messageHost IProgress Message host for logging and reporting. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class HardNcLine Namespace Hi.Numerical Assembly HiUniNc.dll Represents a line in the NC program with its associated data and operations. public class HardNcLine : IIndexedFileLine, IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex, IFlagText, ISentenceCarrier, IGetSentence, ISentenceIndexed Inheritance object HardNcLine Implements IIndexedFileLine IFileLine IFileLineIndex IGetIndexedFileLine IGetFileLineIndex IFlagText ISentenceCarrier IGetSentence ISentenceIndexed Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) HardNcUtil.IsFlagChanging(HardNcLine, HardNcLine, NcFlag) HardNcUtil.IsFlagChanging(HardNcLine, HardNcLine, NcFlag, bool) HardNcUtil.IsFlagKeeping(HardNcLine, HardNcLine, NcFlag, bool) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, int, out NcNoteCache, IProgress) Ctor from the reference HardNcLine. public HardNcLine(HardNcEnv ncEnv, IndexedFileLine fileLine, HardNcLine preNcLine, int sentenceIndex, out NcNoteCache ncNoteCache, IProgress progress) Parameters ncEnv HardNcEnv NC environment fileLine IndexedFileLine file line preNcLine HardNcLine reference HardNcLine that this HardNcLine copy from. If previous HardNcLine is not null, apply previous HardNcLine. sentenceIndex int 0-based ordinal in NC execution order; stamped at construction and exposed via SentenceIndex. ncNoteCache NcNoteCache Output NC note cache progress IProgress Message host for warnings HardNcLine(HardNcEnv, IProgress) Ctor for initial state. The instance is the pre-pipeline seed (RefNcLineOnInit), so SentenceIndex is set to -1 as a “not in pipeline” sentinel. public HardNcLine(HardNcEnv ncEnv, IProgress messageHost) Parameters ncEnv HardNcEnv messageHost IProgress Properties ArcNcArg NC arguments for arc commands. public ArcNcArg ArcNcArg { get; set; } Property Value ArcNcArg CoordinateInterpolationMode Gets the current coordinate interpolation mode (Cartesian or Polar). public CoordinateInterpolationMode CoordinateInterpolationMode { get; } Property Value CoordinateInterpolationMode F F. Feedrate on NC code. Note that this may not be the working feedrate. Some NC codes like G00 and G28 doesnt use F code. public double F { get; set; } Property Value double Remarks According to Fanuc manual, the default F is zero. Feedrate_mmdmin Feedrate on NC code in current mode in mm/min. See F. public double Feedrate_mmdmin { get; set; } Property Value double Feedrate_mmds Feedrate on NC code in current mode in mm/sec. public double Feedrate_mmds { get; set; } Property Value double FileIndex File Index. Start on 0. public int FileIndex { get; } Property Value int FileNo Gets the file number. [Present(\"File Number\", \"FileNo\", PhysicsUnit.None, \"G\")] public int FileNo { get; } Property Value int FilePath File path. [Present(\"File\", \"File\", PhysicsUnit.None, \"G\")] public string FilePath { get; } Property Value string FlagsText Gets a string representation of the active NC flags for this line. public string FlagsText { get; } Property Value string G28Arg Arguments for G28 commands. public G28Arg G28Arg { get; set; } Property Value G28Arg G52_Xyz Local coordinate system translation. public Vec3d G52_Xyz { get; set; } Property Value Vec3d G54SeriesCoordinateNum1000 Faunc Group14 value. Note that Heidenhain Datum shift is set by DatumTableId. public int G54SeriesCoordinateNum1000 { get; set; } Property Value int Group07NcArg Arguments for Group07 NC commands (tool radius compensation). public Group07NcArg Group07NcArg { get; set; } Property Value Group07NcArg Group07_D Radius compensation ID. Note that in Siemens controller, each tool ID has several D entry. public int Group07_D { get; set; } Property Value int Group08_H Height compensation ID. For Siemens Traori, the value is Tool ID. For Heidenhain, the value is Tool ID. public int Group08_H { get; set; } Property Value int Group09NcArg NC Argument of NC Group09. public Group09NcArg Group09NcArg { get; set; } Property Value Group09NcArg HeidenhainBlockCacheArg Heidenhain block cache arguments for various Heidenhain commands. public IHeidenhainBlockCacheArg HeidenhainBlockCacheArg { get; set; } Property Value IHeidenhainBlockCacheArg HeidenhainCycleDef247Q339 DATUM SETTING DATUM Number. public int HeidenhainCycleDef247Q339 { get; set; } Property Value int HeidenhainCycleDef7Arg Arguments for Heidenhain Cycle Definition 7 (datum shift). public HeidenhainCycleDef7Arg HeidenhainCycleDef7Arg { get; set; } Property Value HeidenhainCycleDef7Arg HeidenhainM140MB HeidenhainM140(Retract the tool) MB value. MB is the retraction height. double.positiveInf is [MB MAX]. One shot command. public double HeidenhainM140MB { get; set; } Property Value double HeidenhainQMacroMap Dictionary mapping Q macro numbers to their string values for Heidenhain controllers. public Dictionary HeidenhainQMacroMap { get; set; } Property Value Dictionary HeidenhainToolAxisDir Direction of the tool axis for Heidenhain controllers. public int HeidenhainToolAxisDir { get; set; } Property Value int IndexedFileLine The file line information associated with this NC line. public IndexedFileLine IndexedFileLine { get; } Property Value IndexedFileLine IsAbsolutePositioning Gets a value indicating whether absolute positioning (G90) is active. public bool IsAbsolutePositioning { get; } Property Value bool IsHeightCompensationEnabled Gets a value indicating whether height compensation is enabled. public bool IsHeightCompensationEnabled { get; } Property Value bool IsOnArcCommand Gets a value indicating whether an arc command (G02 or G03) is active. public bool IsOnArcCommand { get; } Property Value bool IsPathPrepared Gets a value indicating whether the path is prepared (no radius compensation). public bool IsPathPrepared { get; } Property Value bool IsRadiusCompensationEnabled Gets a value indicating whether radius compensation is enabled. public bool IsRadiusCompensationEnabled { get; } Property Value bool IsToolCenterPointManagementEnabled Gets a value indicating whether tool center point management is enabled. public bool IsToolCenterPointManagementEnabled { get; } Property Value bool Line The line. [Present(\"Line\", \"Line\", PhysicsUnit.None, \"G\")] public string Line { get; } Property Value string LineIndex Line Index. Start on 0. public int LineIndex { get; } Property Value int LineNo Gets the line number. [Present(\"Line Number\", \"LineNo\", PhysicsUnit.None, \"G\")] public int LineNo { get; } Property Value int MachiningFeedrate_mmdmin Machining Feedrate on NC code in machining mode (such as G01,G02,G03 but not G00) in mm/min. public double MachiningFeedrate_mmdmin { get; set; } Property Value double MachiningFeedrate_mmds Machining Feedrate on NC code in machining mode (such as G01,G02,G03 but not G00) in mm/sec. public double MachiningFeedrate_mmds { get; set; } Property Value double McAbc_deg Gets or sets the machine ABC coordinates in degrees. public Vec3d McAbc_deg { get; set; } Property Value Vec3d McAbc_rad Machine coordinates in ABC format (radians). public Vec3d McAbc_rad { get; } Property Value Vec3d McXyz Gets or sets the machine coordinate XYZ values. public Vec3d McXyz { get; } Property Value Vec3d McXyzabc Machine coordinate ( with side radius compensation if existed). Point is XYZ. the unit is mm. Normal is ABC. the unit is radian. public DVec3d McXyzabc { get; } Property Value DVec3d NcFlagBitArray Internal Used. public BitArray NcFlagBitArray { get; } Property Value BitArray PausingNcArg public PausingNcArg PausingNcArg { get; set; } Property Value PausingNcArg Remarks Since this is base on OneShot Flag, so here has no copy ctor. PolarEntry Data structure for polar coordinates entry. public PolarEntry PolarEntry { get; set; } Property Value PolarEntry PreparationT Tool ID for preparation. public int PreparationT { get; set; } Property Value int ProgramOrthogonalPlaneNormal The orthogonal plane transform after tilting plane transform. Include G17, G18, G19 and plane of called G12p1. public Vec3d ProgramOrthogonalPlaneNormal { get; } Property Value Vec3d ProgramPos ProgramPos can be cartesian XYZ or polar XCZ with radius-based X, depends on CoordinateInterpolationMode. public Vec3d ProgramPos { get; } Property Value Vec3d ProgramXyz XYZ in Feature Coordinate. Cartesian Program Position XYZ, Abs Program Position (as G90 position). NC coordinate position is the position processed by modal flags. NC coordinate position is the position after radius compensation. The NC(Program) coordinate position is comprehensible by User. MC NC conversion may raise floating error. The floating error raise the cutting force issue, especially for bottom cutting force. Hence the NC values have to be memorized. public Vec3d ProgramXyz { get; } Property Value Vec3d Remarks NC is the better source property than MC. Ex. a NC line command: X100. The Y and Z value may vary if using MC converting back to NC. The error of Y and Z will keeps accumulating until the next explicit YZ command assignment. The error maybe up to 3e-5 in current case. the bounding box size of the case is not large (TT.20230815). Also note that if using Arc command for a complete circle, the begin NC XYZ and the end NC XYZ have to be equaled. Otherwise, it will become only a very small arc rather than the circle. So be care that do not change the NC XYZ if not needed. RadiusCompensationBuf Internal use. public RadiusCompensationBuf RadiusCompensationBuf { get; set; } Property Value RadiusCompensationBuf RapidFeedrate_mmdmin Rapid Feedrate on NC code in rapid mode (such as G00 but not G01,G02,G03) in mm/min. public double RapidFeedrate_mmdmin { get; set; } Property Value double RapidFeedrate_mmds Rapid Feedrate on NC code in rapid mode (such as G00 but not G01,G02,G03) in mm/sec. public double RapidFeedrate_mmds { get; set; } Property Value double S S. Spindle speed. public int S { get; set; } Property Value int SentenceIndex 0-based ordinal in NC execution order, stamped at construction by Hi.Numerical.FilePlayers.HardNcRunner (source-side) or by NcOptProc (optimized-side, a fresh independent count). Init-state lines (RefNcLineOnInit) carry -1 as a “not in pipeline” sentinel. public int SentenceIndex { get; } Property Value int SpindleSpeed_radds Spindle speed in radian/s. public double SpindleSpeed_radds { get; set; } Property Value double SpindleSpeed_rpm Spindle speed in RPM. public double SpindleSpeed_rpm { get; set; } Property Value double T Current equiped Tool ID. public int T { get; set; } Property Value int TiltPlaneNcArg Arguments related to tilted plane operations. public ITiltPlaneNcArg TiltPlaneNcArg { get; set; } Property Value ITiltPlaneNcArg Methods GetAttacherMat(HardNcEnv) Gets the attacher transformation matrix for the current machine coordinates. public Mat4d GetAttacherMat(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv The NC environment. Returns Mat4d The attacher transformation matrix. GetCompensationHeight(HardNcEnv, IProgress) Gets the tool height compensation value for this NC line. public double GetCompensationHeight(HardNcEnv ncEnv, IProgress messageHost) Parameters ncEnv HardNcEnv NC environment messageHost IProgress Message host for warnings Returns double Height compensation value GetCompensationRadius(CncBrand, MillingToolOffsetTable, IProgress) Gets the tool radius compensation value for this NC line. public double GetCompensationRadius(CncBrand cncBrand, MillingToolOffsetTable millingToolOffsetTable, IProgress messageHost) Parameters cncBrand CncBrand CNC brand millingToolOffsetTable MillingToolOffsetTable Milling tool offset table messageHost IProgress Message host for warnings Returns double Radius compensation value GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetG5xCoordinateOffset(HardNcEnv) Gets the G5x coordinate offset for this NC line. public Vec3d GetG5xCoordinateOffset(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv NC environment Returns Vec3d The G5x coordinate offset vector GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. GetMcByProgramPos(Vec3d, HardNcEnv, NcNoteCache, IProgress, out Vec3d) Internal Use. public DVec3d GetMcByProgramPos(Vec3d programPos, HardNcEnv ncEnv, NcNoteCache ncNoteCache, IProgress messageHost, out Vec3d programXyz) Parameters programPos Vec3d ncEnv HardNcEnv ncNoteCache NcNoteCache messageHost IProgress programXyz Vec3d Returns DVec3d GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence GetSourceCommand() public IIndexedFileLine GetSourceCommand() Returns IIndexedFileLine GetTiltMat4d(HardNcEnv, out Mat4d) Internal Use Only. public bool? GetTiltMat4d(HardNcEnv ncEnv, out Mat4d tableToFeatureTransform) Parameters ncEnv HardNcEnv NC environment. tableToFeatureTransform Mat4d Transform from NC to Table without tool compensation and linear coordinate offset (such as G55,G56..). Returns bool? True if G68.2 is successfully applied, false if not, and null if not applicable. HasSyntaxXyz(HardNcEnv) Determines whether the line contains syntactic XYZ coordinates. public bool HasSyntaxXyz(HardNcEnv ncEnv) Parameters ncEnv HardNcEnv NC environment Returns bool True if syntactic XYZ coordinates are present; otherwise, false. RebuildByMc(HardNcEnv, DVec3d, NcNoteCache, IProgress) Internal Use Only. For NC opt. public void RebuildByMc(HardNcEnv ncEnv, DVec3d mc, NcNoteCache ncNoteCache, IProgress messageHost) Parameters ncEnv HardNcEnv NC environment. mc DVec3d MC coordinates. ncNoteCache NcNoteCache NC line cache. messageHost IProgress Message host for logging and reporting. RebuildByProgramXyz(HardNcEnv, Vec3d, NcNoteCache, IProgress) Internal Use Only. For NC opt. public void RebuildByProgramXyz(HardNcEnv ncEnv, Vec3d programXyz, NcNoteCache ncNoteCache, IProgress messageHost) Parameters ncEnv HardNcEnv NC environment. programXyz Vec3d Program XYZ coordinates. ncNoteCache NcNoteCache NC note cache. messageHost IProgress Message host for logging and reporting. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Numerical.HardNcUtil.html": { "href": "api/Hi.Numerical.HardNcUtil.html", @@ -5472,7 +5612,7 @@ "api/Hi.Numerical.SourcedActEntry.html": { "href": "api/Hi.Numerical.SourcedActEntry.html", "title": "Class SourcedActEntry | HiAPI-C# 2025", - "summary": "Class SourcedActEntry Namespace Hi.Numerical Assembly HiMech.dll Represents an entry containing a source command and its associated act. public record SourcedActEntry : IEquatable Inheritance object SourcedActEntry Implements IEquatable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SourcedActEntry(IGetSentence, IAct) Represents an entry containing a source command and its associated act. public SourcedActEntry(IGetSentence SentenceSource, IAct Act) Parameters SentenceSource IGetSentence The source sentence. Act IAct The act associated with the source command. Properties Act The act associated with the source command. public IAct Act { get; init; } Property Value IAct SentenceSource The source sentence. public IGetSentence SentenceSource { get; init; } Property Value IGetSentence" + "summary": "Class SourcedActEntry Namespace Hi.Numerical Assembly HiMech.dll Represents an entry containing a source command and its associated act. public record SourcedActEntry : IEquatable Inheritance object SourcedActEntry Implements IEquatable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SourcedActEntry(ISentenceCarrier, IAct) Represents an entry containing a source command and its associated act. public SourcedActEntry(ISentenceCarrier SentenceSource, IAct Act) Parameters SentenceSource ISentenceCarrier The source sentence carrier, carrying both the Sentence and the execution-order SentenceIndex. Act IAct The act associated with the source command. Properties Act The act associated with the source command. public IAct Act { get; init; } Property Value IAct SentenceSource The source sentence carrier, carrying both the Sentence and the execution-order SentenceIndex. public ISentenceCarrier SentenceSource { get; init; } Property Value ISentenceCarrier" }, "api/Hi.Numerical.SpindleDirection.html": { "href": "api/Hi.Numerical.SpindleDirection.html", @@ -6547,7 +6687,7 @@ "fundamentals/common/xml-io.html": { "href": "fundamentals/common/xml-io.html", "title": "About XML IO | HiAPI-C# 2025", - "summary": "About XML IO The XML IO design pattern in HiNc Framework is based on IMakeXmlSource interface and XFactory class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format. Don't serialize the runtime member object like Func or Action either cache object. The runtime objects can be optionally sent by the res part on the XFactory Registration or set by the other host or dependent object. If it is set by the other object, then there is nothing can do to it in the XML IO procedure. Core Components IMakeXmlSource Interface The IMakeXmlSource interface defines the contract for objects that can be serialized to XML format. It contains a single method MakeXmlSource. XFactory Registration Every class implementing IMakeXmlSource must: Define a static XName property matching the class name. Register itself in the static constructor using XFactory.Regs.Add Implement XML serialization and deserialization logic The registration delegate signature includes an IProgress parameter for diagnostic message routing: XFactory.Regs.Add(XName, (xml, baseDirectory, relFile, progress, res) => new MyClass(xml, baseDirectory, relFile, progress)); For example, see BallApt: static BallApt() { // Register to the . XFactory.Regs.Add(XName, (xml,baseDirectory, relFile, progress, res) => new BallApt(xml)); } IProgress Threading The IProgress parameter is threaded through the entire deserialization chain. When a class constructor calls XFactory to deserialize child objects, it passes the same progress instance: public MyClass(XElement src, string baseDirectory, string relFile, IProgress progress) { Child = XFactory.GenByChild( src.Element(nameof(Child)), subBaseDirectory, progress); } Parsing errors are reported to the caller-provided IProgress handler. Implementation Patterns Simple Value Objects See BallApt implementation: /// /// Name for XML IO. /// public static string XName => nameof(BallApt); /// /// Ctor. /// /// XML public BallApt(XElement src) { Diameter_mm = double.Parse(src.Element(\"D\").Value); FluteHeight_mm = double.Parse(src.Element(\"FluteH\").Value); } /// public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) => ToXElement(); /// public XElement ToXElement() { return new XElement(XName, new XElement(\"D\", Diameter_mm), new XElement(\"FluteH\", FluteHeight_mm) ); } Complex Data Structures See SpindleCapability implementation: /// /// Name for XML IO. /// public static string XName => nameof(SpindleCapability); /// /// Initializes a new instance of the class. /// /// The XML element containing spindle data. /// The base directory for resolving relative paths. /// Additional resolution parameters. public SpindleCapability(XElement src, string baseDirectory, params object[] res) { this.SetNameNote(src); if (src.Element(nameof(EnergyEfficiency)) != null) EnergyEfficiency = XmlConvert.ToDouble( src.Element(nameof(EnergyEfficiency)).Value); src.Element(nameof(WorkingTemperatureUpperBoundary_C))?.SelfInvoke( e => WorkingTemperatureUpperBoundary_C = XmlConvert.ToDouble(e.Value)); src.Element(nameof(GearShiftSpindleSpeed_rpm))?.Value?.SelfInvoke( s => GearShiftSpindleSpeed_rpm = string.IsNullOrEmpty(s) ? null : XmlConvert.ToDouble(s)); if (src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)) != null) DryRunFrictionPowerCoefficient_mWdrpm = XmlConvert.ToDouble( src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)).Value); if (src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)) != null) DryRunWindagePowerCoefficient_pWdrpm3 = XmlConvert.ToDouble( src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)).Value); if (src.Element(\"SpindleSpeedToPowerContours\") != null) //for legacy WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = src.Element(\"SpindleSpeedToPowerContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r == 1 ? double.PositiveInfinity : (r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\") ?.SelfInvoke(dicElem => { WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = dicElem.Elements(\"Contour\") .ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); }); if (src.Element(\"SpindleSpeedToTorqueContours\") != null) //for legacy WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = src.Element(\"SpindleSpeedToTorqueContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r == 1 ? double.PositiveInfinity : (r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\") ?.SelfInvoke(dicElem => { //MessageUtil.WriteLine($\"dicElem: {dicElem}\"); WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = dicElem.Elements(\"Contour\").ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); //MessageUtil.WriteLine($\"keys: {string.Join(',',WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.Select(e=>e.Key))}\"); }); //for legacy compatible. if (src.Element(\"SpindleSpeedToPower--RPM-to-kW\") != null) InfInsistentSpindleSpeedToPower_cycleDs_kW = src.Element(\"SpindleSpeedToPower--RPM-to-kW\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); //for legacy compatible. if (src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\") != null) InfInsistentSpindleSpeedToTorque_cycleDs_Nm = src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); } /// public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) { return new XElement(XName, this.GetNameNoteXElementList(), new XElement(nameof(EnergyEfficiency), EnergyEfficiency), new XElement(nameof(GearShiftSpindleSpeed_rpm), GearShiftSpindleSpeed_rpm), new XElement(nameof(DryRunFrictionPowerCoefficient_mWdrpm), DryRunFrictionPowerCoefficient_mWdrpm), new XElement(nameof(DryRunWindagePowerCoefficient_pWdrpm3), DryRunWindagePowerCoefficient_pWdrpm3), new XElement(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\", WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToPower\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Power-kW\", entry.Y))))) ), new XElement(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\", WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToTorque\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Torque-Nm\", entry.Y))))) ) ); } Best Practices XName: Always define static XName property matching the class name. Registration: Register in static constructor using XFactory.Regs Call the XName such like _ = CalleeClass.XName; in the caller class static initialization field so that the registration takes effect before calling the Callee construction by XFactory. Progress Threading: Pass the IProgress parameter through all nested XFactory calls. See Message Management for the rationale. Legacy Support: Maintain backward compatibility when needed" + "summary": "About XML IO The XML IO design pattern in HiNc Framework is based on IMakeXmlSource interface and XFactory class. This pattern provides a standardized way to serialize and deserialize objects to and from XML format. Don't serialize the runtime member object like Func or Action either cache object. The runtime objects can be optionally sent by the res part on the XFactory Registration or set by the other host or dependent object. If it is set by the other object, then there is nothing can do to it in the XML IO procedure. Core Components IMakeXmlSource Interface The IMakeXmlSource interface defines the contract for objects that can be serialized to XML format. It contains a single method MakeXmlSource. XFactory Registration Every class implementing IMakeXmlSource must: Define a static XName property matching the class name. Register itself in the static constructor using XFactory.Regs.Add Implement XML serialization and deserialization logic The registration delegate signature includes an IProgress parameter for diagnostic message routing: XFactory.Regs.Add(XName, (xml, baseDirectory, relFile, progress, res) => new MyClass(xml, baseDirectory, relFile, progress)); For example, see BallApt: static BallApt() { // Register to the . XFactory.Generators.Add(XName, (xml,baseDirectory, relFile, progress, res) => new BallApt(xml)); } IProgress Threading The IProgress parameter is threaded through the entire deserialization chain. When a class constructor calls XFactory to deserialize child objects, it passes the same progress instance: public MyClass(XElement src, string baseDirectory, string relFile, IProgress progress) { Child = XFactory.GenByChild( src.Element(nameof(Child)), subBaseDirectory, progress); } Parsing errors are reported to the caller-provided IProgress handler. Implementation Patterns Simple Value Objects See BallApt implementation: /// /// Name for XML IO. /// public static string XName => nameof(BallApt); /// /// Ctor. /// /// XML public BallApt(XElement src) { Diameter_mm = double.Parse(src.Element(\"D\").Value); FluteHeight_mm = double.Parse(src.Element(\"FluteH\").Value); } /// public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) => ToXElement(); /// public XElement ToXElement() { return new XElement(XName, new XElement(\"D\", Diameter_mm), new XElement(\"FluteH\", FluteHeight_mm) ); } Complex Data Structures See SpindleCapability implementation: /// /// Name for XML IO. /// public static string XName => nameof(SpindleCapability); /// /// Initializes a new instance of the class. /// /// The XML element containing spindle data. /// The base directory for resolving relative paths. /// Additional resolution parameters. public SpindleCapability(XElement src, string baseDirectory, params object[] res) { this.SetNameNote(src); if (src.Element(nameof(EnergyEfficiency)) != null) EnergyEfficiency = XmlConvert.ToDouble( src.Element(nameof(EnergyEfficiency)).Value); src.Element(nameof(WorkingTemperatureUpperBoundary_C))?.SelfInvoke( e => WorkingTemperatureUpperBoundary_C = XmlConvert.ToDouble(e.Value)); src.Element(nameof(GearShiftSpindleSpeed_rpm))?.Value?.SelfInvoke( s => GearShiftSpindleSpeed_rpm = string.IsNullOrEmpty(s) ? null : XmlConvert.ToDouble(s)); if (src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)) != null) DryRunFrictionPowerCoefficient_mWdrpm = XmlConvert.ToDouble( src.Element(nameof(DryRunFrictionPowerCoefficient_mWdrpm)).Value); if (src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)) != null) DryRunWindagePowerCoefficient_pWdrpm3 = XmlConvert.ToDouble( src.Element(nameof(DryRunWindagePowerCoefficient_pWdrpm3)).Value); if (src.Element(\"SpindleSpeedToPowerContours\") != null) //for legacy WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = src.Element(\"SpindleSpeedToPowerContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r == 1 ? double.PositiveInfinity : (r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\") ?.SelfInvoke(dicElem => { WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW = dicElem.Elements(\"Contour\") .ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToPower\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Power-kW\").Value))) .ToList()); }); if (src.Element(\"SpindleSpeedToTorqueContours\") != null) //for legacy WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = src.Element(\"SpindleSpeedToTorqueContours\").Elements(\"Contour\") .ToDictionary( contourElem => { double r = XmlConvert.ToDouble(contourElem.Attribute(\"InsistentRatio\")?.Value); //600s=10mins return r == 1 ? double.PositiveInfinity : (r * 600); }, contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); src.Element(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\") ?.SelfInvoke(dicElem => { //MessageUtil.WriteLine($\"dicElem: {dicElem}\"); WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm = dicElem.Elements(\"Contour\").ToDictionary( contourElem => XmlConvert.ToDouble( contourElem.Attribute(\"WorkableDuration-min\")?.Value), contourElem => contourElem.Elements(\"SpindleSpeedToTorque\").Select( elem => new Vec2d( XmlConvert.ToDouble(elem.Element(\"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Element(\"Torque-Nm\").Value))) .ToList()); //MessageUtil.WriteLine($\"keys: {string.Join(',',WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.Select(e=>e.Key))}\"); }); //for legacy compatible. if (src.Element(\"SpindleSpeedToPower--RPM-to-kW\") != null) InfInsistentSpindleSpeedToPower_cycleDs_kW = src.Element(\"SpindleSpeedToPower--RPM-to-kW\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); //for legacy compatible. if (src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\") != null) InfInsistentSpindleSpeedToTorque_cycleDs_Nm = src.Element(\"SpindleSpeedToTorque--RPM-to-Nm\").Elements() .Select(elem => new Vec2d(XmlConvert.ToDouble(elem.Attribute( \"SpindleSpeed-RPM\").Value) / 60, XmlConvert.ToDouble(elem.Value))).ToList(); } /// public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) { return new XElement(XName, this.GetNameNoteXElementList(), new XElement(nameof(EnergyEfficiency), EnergyEfficiency), new XElement(nameof(GearShiftSpindleSpeed_rpm), GearShiftSpindleSpeed_rpm), new XElement(nameof(DryRunFrictionPowerCoefficient_mWdrpm), DryRunFrictionPowerCoefficient_mWdrpm), new XElement(nameof(DryRunWindagePowerCoefficient_pWdrpm3), DryRunWindagePowerCoefficient_pWdrpm3), new XElement(\"WorkableDurationToSpindleSpeedPowerContoursDictionary\", WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToPower\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Power-kW\", entry.Y))))) ), new XElement(\"WorkableDurationToSpindleSpeedTorqueContoursDictionary\", WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm.OrderBy(entry => entry.Key) .Select(entry => new XElement(\"Contour\", new XAttribute(\"WorkableDuration-min\", entry.Key), entry.Value.Select(entry => new XElement(\"SpindleSpeedToTorque\", new XElement(\"SpindleSpeed-RPM\", entry.X * 60), new XElement(\"Torque-Nm\", entry.Y))))) ) ); } Best Practices XName: Always define static XName property matching the class name. Registration: Register in static constructor using XFactory.Regs Call the XName such like _ = CalleeClass.XName; in the caller class static initialization field so that the registration takes effect before calling the Callee construction by XFactory. Progress Threading: Pass the IProgress parameter through all nested XFactory calls. See Message Management for the rationale. Legacy Support: Maintain backward compatibility when needed" }, "fundamentals/general-hinc-workflow/index.html": { "href": "fundamentals/general-hinc-workflow/index.html", @@ -6822,7 +6962,7 @@ "release-note/index.html": { "href": "release-note/index.html", "title": "Release Note | HiAPI-C# 2025", - "summary": "Release Note HiNc Packages Version 3.1.167 Introduce SoftNcRunner as a pluggable NC parser/runner replacing the legacy HardNcRunner; opt in via EnableSoftNcRunner. see HardNc → SoftNc Rewrite — Progress Report for the in-flight rewrite scope and remaining work Extend coolant model to CoolantMode Flood/Mist/Off and refactor CoolantHeatCondition / MillingTemperatureUtil for multi-mode coolant Bind session events to MachiningSession lifetime: SessionStepBuilt, SessionStepSelected, SessionSyntaxPieceRan, SessionSourcedActEntry (legacy aliases kept as [Obsolete]); add RegisterWriteSyntaxPieces / RegisterWriteSyntaxPiecesWithActs for syntax-piece debug tracing Add ProjectApiVersion carrier through XFactory deserialization for project-XML version negotiation; resolve Workpiece through a lazy Func getter in WorkpieceService HiNc Packages Version 3.1.162 Refactor message management into three independent categories: Diagnostic (IProgress), UI Notification (MessageBoardUtil), App Log (ILogger); remove MessageUtil class entirely and remove ExceptionUtil.ShowException / ExceptionUtil.OnShown (see Message Management) Thread IProgress through XFactory deserialization chain and MachiningProject loading; remove GenMode enum entirely (see XML IO) Add ActionProgress.FromLogger to bridge IProgress APIs to ILogger Rename ShowIfCatched → CatchExceptions with explicit Action handler; remove RoutineBlocker0 Extract WorkpieceService from Workpiece for runtime geometry operations Update ISO coordinate rendering for 3+2 axis machines: coordinate position now uses IsoCoordinateEntryDisplayee with full machining chain anchor instead of table-buckle-only anchor Rename SessionMessageHost → SessionProgress on both SessionProgress and SessionProgress (SessionShell.SessionMessageHost is kept as [Obsolete]) Remove obsolete HiLog logging utility and DynamicMachiningProjectDisplayee0 HiNc Packages Version 3.1.160 Fix NC optimization R-format arc interpolation with negative R values (follow-up to v158 R-format arc fix) Fix cubetree construction defect when a triangle edge passes through a wire corner Mech Builder: geometry (STL) file picker for anchored transformation now offers Project directory in addition to Resource directory. Rename XML IO utilities: XmlSourceAndFile → FileRefSource, CombineAsSubDirectory → GetResourceDirectory, MakeXmlSourceWithRebaseFile → MakeXmlSourceToFileRef HiNc Packages Version 3.1.158 Fix G53.1 tool height compensation behavior: replace NcEnv.SetToolHeightCompensationOnFeatureNormal configuration with automatic detection via NC flag state Make EnableIntegerShrinkOnPositionCommand configurable via project settings (previously hard-coded by CNC brand, now defaults to false with XML IO support) Fix NC optimization splitting R-format arcs (G02/G03 with R parameter) by converting to IJK format, since R sign meaning does not apply correctly to individual fragments Fix step.csv reading crash on null or malformed values Fix XML IO sub-base directory not applied in some project file operations Improve CSV actual time parsing to support DateTime format in addition to TimeSpan (see Workflow: Basic Machining Simulation) Fix CSV title parsing to trim surrounding quotes HiNc Packages Version 3.1.156 Fix G68 coordinate rotation transformation for non-origin rotation centers Fix NC optimization arc/circle offset when splitting arc fragments across multiple lines Fix optimization rotation code jumping at ±180° cycle boundary by applying cyclic angle comparison Fix RTCP on unmatched tool offset Fix blocking issue when time-mapping file not found Fix FlagsText always null after NC parser refactoring HiNc Packages Version 3.1.150 Add cubetree geometry defect scanning (ScanRuntimeGeomInfDefect) and clearing (ClearDefectDisplayee) for detecting and visualizing geometry anomalies in workpieces (see Workflow: Geometry Validation) Upgrade internal fraction representation to float128 precision for improved cubetree geometry accuracy and numerical stability Refactor messaging system from IMessageHost to standard IProgress pattern; SessionProgress (formerly SessionMessageHost) now implements IProgress, and all messaging methods renamed from Add* to Report* (e.g., AddProgress → ReportProgress) Fix cubetree initialization crash Improve postprocess precision by applying sin–cos parameterization instead of direct angle-based formulation for rotary axis numerical solving in XyzabcSolver Add asynchronous anchor solid preparation on project load for improved startup performance HiNc Packages Version 3.1.144 Enhance Siemens Sinumerik support: Siemens CYCLE800 coordinate transform and reset Siemens MCALL CYCLE81() drilling cycle parsing Siemens TRAORI/TRAFOOF/SUPA flag parsing Fix Siemens TRAFOOF plain rotation coordinate transform issue Fix Siemens coordinate transform for successive file running Fix relief face collision floating-point precision issue Replace MongoDB with SQLite for local step data storage (significant package size reduction) Add machining and motion resolution dynamic adjustment functions HiNc Packages Version 3.1.106 Rename mapping API for clearer naming: ReadCsvByTimeInterpolation → MapSingleByCsvFile (one-to-one mapping) MapByActualTime → MapSeriesByCsvFile (one-to-many mapping) Rename CSV column prefix Spindle to Holder for sensor data mapping Unify CSV column tags to MappingUtil for consistent data mapping Fix ChartRange manipulation to be time-based instead of step-based for more accurate time chart display Tune thread priority for machining parallel processing to improve UI responsiveness during simulation Various code cleanup and improvements HiNc Packages Version 3.1.102 Separate resource files (Resource, wwwroot, Doc) to HiNc-Resource nuget package for smaller package size Add ScaledFeedPerCycle function for scaled feed-per-cycle machining motion resolution Upgrade target framework to .NET 10.0 Various code cleanup and improvements HiNc Packages Version 3.1.100 Refactor project architecture: split runtime functions from MachiningProject to LocalProjectService for better separation of concerns Improve MillingTraining module with separate lead and result parameter templates for more accurate cutting parameter training Separate C++ library for code protection Add UTF-8 file path support for runtime geometry IO operations Improve CsvRunner with enhanced time mapping pattern Various architecture improvements and bug fixes HiNc Packages Version 3.1.91 Add NcOptimizationEmbeddedLogMode to control embedded log detail level (None/SimpleLog/FullLog) (see Embedded Log Comments). Fix bug of NcOptProc duplicated feedrate assignment HiNc Packages Version 3.1.90 Rename optimization log API EnableIndividualStepAdjustmentLog Fix crash from workpiece displaying with specific mechanical topology setting Improve .flatproc.log output to maintain step order during parallel computation Various stability improvements and bug fixes HiNc Packages Version 3.1.86 Re-build NcOptProc with stricter optimization logics Add optimization logging features (see Optimization Logs): .flatproc.log file output for optimization process analysis Embedded log comments in optimized NC file marking source lines with (src) suffix Fix cutting depth and width accuracy by bounding-box method with workpiece surface Fix collision check error during concurrent changing collidable object Various stability improvements and bug fixes HiNc Packages Version 3.1.84 Optimize memory usage by shrinking map-size of clStripPos Fix design pattern of cutting parameter training module (MillingTraining) Add LoadCuttingParaByFile function to load cutting parameters from file Improve CsvRunner actual time parsing: automatically calculate step duration from actual time when duration is not provided Enhance message handling in SessionShell by unifying SessionProgress usage Improve optimization performance with better task scheduling Various performance improvements and bug fixes HiNc Packages Version 3.1.75 Add actual time tracking functionality (ActualTime) Various stability improvements and bug fixes HiNc Packages Version 3.1.74 Rename class MillingCutterOptLimit to MillingCutterOptOption Add physics simulation function for relief face collision detection (ReliefFaceCollidingSpeed_mmds, IsReliefFaceCollided) and optimization (EnableLimitByReliefAngle) Add UpdateNcOptOption function to step processing Fix step ordering bug from concurrent processing Fix ClStrip shrinking to zero issue" + "summary": "Release Note HiNc Packages Version 3.1.171 Rename RuntimeApi → SessionShell (the runtime entry point exposed to scripting); IShellCommand → ISessionCommand and RuntimeController → SessionShellController; the Hi.ShellCommands namespace moves to Hi.SessionCommands, and every command implementer's Run() parameter renames scriptApi → sessionShell Tri-state milling-physics contract: MachiningStep physics getters converge on a tri-state result, non-null MillingPhysicsBrief on no-cut steps under EnablePhysics; silently skip thermal physics on null FluteMaterial / WorkpieceMaterial; lazy first-equip warning; align relief-face null-sentinel across NoCut + producer (in NcOpt and forces) Rename IMachiningStepHost → IMachiningService (drops the ICsScriptApi seam) Fixes: rotary IK round-trip anchored to pre-FK interpolated angle; ForceAccelShot.ReadRows skips blank lines HiNc Packages Version 3.1.167 Introduce SoftNcRunner as a pluggable NC parser/runner replacing the legacy HardNcRunner; opt in via EnableSoftNcRunner. see HardNc → SoftNc Rewrite — Progress Report for the in-flight rewrite scope and remaining work Extend coolant model to CoolantMode Flood/Mist/Off and refactor CoolantHeatCondition / MillingTemperatureUtil for multi-mode coolant Bind session events to MachiningSession lifetime: SessionStepBuilt, SessionStepSelected, SessionSyntaxPieceRan, SessionSourcedActEntry (legacy aliases kept as [Obsolete]); add RegisterWriteSyntaxPieces / RegisterWriteSyntaxPiecesWithActs for syntax-piece debug tracing Add ProjectApiVersion carrier through XFactory deserialization for project-XML version negotiation; resolve Workpiece through a lazy Func getter in WorkpieceService HiNc Packages Version 3.1.162 Refactor message management into three independent categories: Diagnostic (IProgress), UI Notification (MessageBoardUtil), App Log (ILogger); remove MessageUtil class entirely and remove ExceptionUtil.ShowException / ExceptionUtil.OnShown (see Message Management) Thread IProgress through XFactory deserialization chain and MachiningProject loading; remove GenMode enum entirely (see XML IO) Add ActionProgress.FromLogger to bridge IProgress APIs to ILogger Rename ShowIfCatched → CatchExceptions with explicit Action handler; remove RoutineBlocker0 Extract WorkpieceService from Workpiece for runtime geometry operations Update ISO coordinate rendering for 3+2 axis machines: coordinate position now uses IsoCoordinateEntryDisplayee with full machining chain anchor instead of table-buckle-only anchor Rename SessionMessageHost → SessionProgress on both SessionProgress and SessionProgress (SessionShell.SessionMessageHost is kept as [Obsolete]) Remove obsolete HiLog logging utility and DynamicMachiningProjectDisplayee0 HiNc Packages Version 3.1.160 Fix NC optimization R-format arc interpolation with negative R values (follow-up to v158 R-format arc fix) Fix cubetree construction defect when a triangle edge passes through a wire corner Mech Builder: geometry (STL) file picker for anchored transformation now offers Project directory in addition to Resource directory. Rename XML IO utilities: XmlSourceAndFile → FileRefSource, CombineAsSubDirectory → GetResourceDirectory, MakeXmlSourceWithRebaseFile → MakeXmlSourceToFileRef HiNc Packages Version 3.1.158 Fix G53.1 tool height compensation behavior: replace NcEnv.SetToolHeightCompensationOnFeatureNormal configuration with automatic detection via NC flag state Make EnableIntegerShrinkOnPositionCommand configurable via project settings (previously hard-coded by CNC brand, now defaults to false with XML IO support) Fix NC optimization splitting R-format arcs (G02/G03 with R parameter) by converting to IJK format, since R sign meaning does not apply correctly to individual fragments Fix step.csv reading crash on null or malformed values Fix XML IO sub-base directory not applied in some project file operations Improve CSV actual time parsing to support DateTime format in addition to TimeSpan (see Workflow: Basic Machining Simulation) Fix CSV title parsing to trim surrounding quotes HiNc Packages Version 3.1.156 Fix G68 coordinate rotation transformation for non-origin rotation centers Fix NC optimization arc/circle offset when splitting arc fragments across multiple lines Fix optimization rotation code jumping at ±180° cycle boundary by applying cyclic angle comparison Fix RTCP on unmatched tool offset Fix blocking issue when time-mapping file not found Fix FlagsText always null after NC parser refactoring HiNc Packages Version 3.1.150 Add cubetree geometry defect scanning (ScanRuntimeGeomInfDefect) and clearing (ClearDefectDisplayee) for detecting and visualizing geometry anomalies in workpieces (see Workflow: Geometry Validation) Upgrade internal fraction representation to float128 precision for improved cubetree geometry accuracy and numerical stability Refactor messaging system from IMessageHost to standard IProgress pattern; SessionProgress (formerly SessionMessageHost) now implements IProgress, and all messaging methods renamed from Add* to Report* (e.g., AddProgress → ReportProgress) Fix cubetree initialization crash Improve postprocess precision by applying sin–cos parameterization instead of direct angle-based formulation for rotary axis numerical solving in XyzabcSolver Add asynchronous anchor solid preparation on project load for improved startup performance HiNc Packages Version 3.1.144 Enhance Siemens Sinumerik support: Siemens CYCLE800 coordinate transform and reset Siemens MCALL CYCLE81() drilling cycle parsing Siemens TRAORI/TRAFOOF/SUPA flag parsing Fix Siemens TRAFOOF plain rotation coordinate transform issue Fix Siemens coordinate transform for successive file running Fix relief face collision floating-point precision issue Replace MongoDB with SQLite for local step data storage (significant package size reduction) Add machining and motion resolution dynamic adjustment functions HiNc Packages Version 3.1.106 Rename mapping API for clearer naming: ReadCsvByTimeInterpolation → MapSingleByCsvFile (one-to-one mapping) MapByActualTime → MapSeriesByCsvFile (one-to-many mapping) Rename CSV column prefix Spindle to Holder for sensor data mapping Unify CSV column tags to MappingUtil for consistent data mapping Fix ChartRange manipulation to be time-based instead of step-based for more accurate time chart display Tune thread priority for machining parallel processing to improve UI responsiveness during simulation Various code cleanup and improvements HiNc Packages Version 3.1.102 Separate resource files (Resource, wwwroot, Doc) to HiNc-Resource nuget package for smaller package size Add ScaledFeedPerCycle function for scaled feed-per-cycle machining motion resolution Upgrade target framework to .NET 10.0 Various code cleanup and improvements HiNc Packages Version 3.1.100 Refactor project architecture: split runtime functions from MachiningProject to LocalProjectService for better separation of concerns Improve MillingTraining module with separate lead and result parameter templates for more accurate cutting parameter training Separate C++ library for code protection Add UTF-8 file path support for runtime geometry IO operations Improve CsvRunner with enhanced time mapping pattern Various architecture improvements and bug fixes HiNc Packages Version 3.1.91 Add NcOptimizationEmbeddedLogMode to control embedded log detail level (None/SimpleLog/FullLog) (see Embedded Log Comments). Fix bug of NcOptProc duplicated feedrate assignment HiNc Packages Version 3.1.90 Rename optimization log API EnableIndividualStepAdjustmentLog Fix crash from workpiece displaying with specific mechanical topology setting Improve .flatproc.log output to maintain step order during parallel computation Various stability improvements and bug fixes HiNc Packages Version 3.1.86 Re-build NcOptProc with stricter optimization logics Add optimization logging features (see Optimization Logs): .flatproc.log file output for optimization process analysis Embedded log comments in optimized NC file marking source lines with (src) suffix Fix cutting depth and width accuracy by bounding-box method with workpiece surface Fix collision check error during concurrent changing collidable object Various stability improvements and bug fixes HiNc Packages Version 3.1.84 Optimize memory usage by shrinking map-size of clStripPos Fix design pattern of cutting parameter training module (MillingTraining) Add LoadCuttingParaByFile function to load cutting parameters from file Improve CsvRunner actual time parsing: automatically calculate step duration from actual time when duration is not provided Enhance message handling in SessionShell by unifying SessionProgress usage Improve optimization performance with better task scheduling Various performance improvements and bug fixes HiNc Packages Version 3.1.75 Add actual time tracking functionality (ActualTime) Various stability improvements and bug fixes HiNc Packages Version 3.1.74 Rename class MillingCutterOptLimit to MillingCutterOptOption Add physics simulation function for relief face collision detection (ReliefFaceCollidingSpeed_mmds, IsReliefFaceCollided) and optimization (EnableLimitByReliefAngle) Add UpdateNcOptOption function to step processing Fix step ordering bug from concurrent processing Fix ClStrip shrinking to zero issue" }, "release-note/softnc-rewrite-report.html": { "href": "release-note/softnc-rewrite-report.html", @@ -6912,7 +7052,7 @@ "sample/Sample.MachineTool.DemoBuildMachineTool.html": { "href": "sample/Sample.MachineTool.DemoBuildMachineTool.html", "title": "Class DemoBuildMachineTool | HiAPI-C# 2025", - "summary": "Class DemoBuildMachineTool Namespace Sample.MachineTool Assembly Hi.Sample.dll Provides access to the PMC-B1 machine tool model. public class DemoBuildMachineTool : IGetCodeXyzabcMachineTool Inheritance object DemoBuildMachineTool Implements IGetCodeXyzabcMachineTool Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Common.XmlUtils; using Hi.Geom; using Hi.Mech; using Hi.Mech.Topo; using Hi.NcMech; using Hi.NcMech.Solids; using Hi.NcMech.Xyzabc; using Hi.Numerical.Xyzabc; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Xml.Linq; namespace Sample.MachineTool { /// /// Provides access to the PMC-B1 machine tool model. /// /// /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/MachineTool/DemoBuildMachineTool.cs)] /// public class DemoBuildMachineTool : IGetCodeXyzabcMachineTool { static DemoBuildMachineTool() { XFactory.Regs.Add(XName, (xml, baseDirectory, relFile, progress, res) => new DemoBuildMachineTool()); } /// /// Generates an XYZ-ABC machine tool instance from embedded resources. /// /// A configured machine tool model. public static CodeXyzabcMachineTool GenXyzabcMachineTool() { CodeXyzabcChain chain = new CodeXyzabcChain(\"[O][Y][X][C][w];[O][Z][B][S][t]\"); if (chain.ToolBuckleTransformer is StaticTranslation st) st.Trans = new Vec3d(-72.40, 72.40, 176.44); chain.TransformerB.Pivot = new Vec3d(-72.4, -177.4, 225.94); Dictionary solidMap = new Dictionary() { [\"O\"] = new Solid(new Stl(\"MachineTool/base.stl\")), [\"X\"] = new Solid(new Stl(\"MachineTool/X.stl\")), [\"Y\"] = new Solid(new Stl(\"MachineTool/Y.stl\")), [\"Z\"] = new Solid(new Stl(\"MachineTool/Z.stl\")), [\"B\"] = new Solid(new Stl(\"MachineTool/B.stl\")), [\"C\"] = new Solid(new Stl(\"MachineTool/C.stl\")), [\"S\"] = new Solid(new Stl(\"MachineTool/spindle.stl\")), }; chain.AnchorToSolid.BuildAnchorToSolid( chain.Asmb.GetDescendantAnchors(), solidMap); CodeXyzabcMachineTool dst = new CodeXyzabcMachineTool(chain); dst.GenerateCollisionIndexPairs(); return dst; } /// /// The cached machine tool instance. /// CodeXyzabcMachineTool MachineTool { get; } /// /// Default constructor that initializes the machine tool model. /// public DemoBuildMachineTool() { MachineTool = GenXyzabcMachineTool(); } #region XML IO //public PmcB1MachineToolSource(XElement src, object res) : this() { } /// /// XML element name for serialization. /// public static string XName = nameof(DemoBuildMachineTool); /// public XElement ToXElement() => new XElement(XName); #endregion /// public CodeXyzabcMachineTool GetXyzabcMachineTool() => MachineTool; /// public IMachiningChain GetMachiningChain() => MachineTool; } } Constructors DemoBuildMachineTool() Default constructor that initializes the machine tool model. public DemoBuildMachineTool() Fields XName XML element name for serialization. public static string XName Field Value string Methods GenXyzabcMachineTool() Generates an XYZ-ABC machine tool instance from embedded resources. public static CodeXyzabcMachineTool GenXyzabcMachineTool() Returns CodeXyzabcMachineTool A configured machine tool model. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetXyzabcMachineTool() Get CodeXyzabcMachineTool. public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool Machine tool. ToXElement() public XElement ToXElement() Returns XElement" + "summary": "Class DemoBuildMachineTool Namespace Sample.MachineTool Assembly Hi.Sample.dll Provides access to the PMC-B1 machine tool model. public class DemoBuildMachineTool : IGetCodeXyzabcMachineTool Inheritance object DemoBuildMachineTool Implements IGetCodeXyzabcMachineTool Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Source Code using Hi.Common.XmlUtils; using Hi.Geom; using Hi.Mech; using Hi.Mech.Topo; using Hi.NcMech; using Hi.NcMech.Solids; using Hi.NcMech.Xyzabc; using Hi.Numerical.Xyzabc; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Xml.Linq; namespace Sample.MachineTool { /// /// Provides access to the PMC-B1 machine tool model. /// /// /// ### Source Code /// [!code-csharp[SampleCode](~/../Hi.Sample/MachineTool/DemoBuildMachineTool.cs)] /// public class DemoBuildMachineTool : IGetCodeXyzabcMachineTool { static DemoBuildMachineTool() { XFactory.Generators.Add(XName, (xml, baseDirectory, relFile, progress, res) => new DemoBuildMachineTool()); } /// /// Generates an XYZ-ABC machine tool instance from embedded resources. /// /// A configured machine tool model. public static CodeXyzabcMachineTool GenXyzabcMachineTool() { CodeXyzabcChain chain = new CodeXyzabcChain(\"[O][Y][X][C][w];[O][Z][B][S][t]\"); if (chain.ToolBuckleTransformer is StaticTranslation st) st.Trans = new Vec3d(-72.40, 72.40, 176.44); chain.TransformerB.Pivot = new Vec3d(-72.4, -177.4, 225.94); Dictionary solidMap = new Dictionary() { [\"O\"] = new Solid(new Stl(\"MachineTool/base.stl\")), [\"X\"] = new Solid(new Stl(\"MachineTool/X.stl\")), [\"Y\"] = new Solid(new Stl(\"MachineTool/Y.stl\")), [\"Z\"] = new Solid(new Stl(\"MachineTool/Z.stl\")), [\"B\"] = new Solid(new Stl(\"MachineTool/B.stl\")), [\"C\"] = new Solid(new Stl(\"MachineTool/C.stl\")), [\"S\"] = new Solid(new Stl(\"MachineTool/spindle.stl\")), }; chain.AnchorToSolid.BuildAnchorToSolid( chain.Asmb.GetDescendantAnchors(), solidMap); CodeXyzabcMachineTool dst = new CodeXyzabcMachineTool(chain); dst.GenerateCollisionIndexPairs(); return dst; } /// /// The cached machine tool instance. /// CodeXyzabcMachineTool MachineTool { get; } /// /// Default constructor that initializes the machine tool model. /// public DemoBuildMachineTool() { MachineTool = GenXyzabcMachineTool(); } #region XML IO //public PmcB1MachineToolSource(XElement src, object res) : this() { } /// /// XML element name for serialization. /// public static string XName = nameof(DemoBuildMachineTool); /// public XElement ToXElement() => new XElement(XName); #endregion /// public CodeXyzabcMachineTool GetXyzabcMachineTool() => MachineTool; /// public IMachiningChain GetMachiningChain() => MachineTool; } } Constructors DemoBuildMachineTool() Default constructor that initializes the machine tool model. public DemoBuildMachineTool() Fields XName XML element name for serialization. public static string XName Field Value string Methods GenXyzabcMachineTool() Generates an XYZ-ABC machine tool instance from embedded resources. public static CodeXyzabcMachineTool GenXyzabcMachineTool() Returns CodeXyzabcMachineTool A configured machine tool model. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetXyzabcMachineTool() Get CodeXyzabcMachineTool. public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool Machine tool. ToXElement() public XElement ToXElement() Returns XElement" }, "sample/Sample.MachineTool.DemoBuildMachineToolWithoutGeometrys.html": { "href": "sample/Sample.MachineTool.DemoBuildMachineToolWithoutGeometrys.html", diff --git a/App/wwwroot/HiAPI-docsite/manifest.json b/App/wwwroot/HiAPI-docsite/manifest.json index 039a0352..823d7736 100644 --- a/App/wwwroot/HiAPI-docsite/manifest.json +++ b/App/wwwroot/HiAPI-docsite/manifest.json @@ -2826,17 +2826,17 @@ }, { "type": "ManagedReference", - "source_relative_path": "api/Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.yml", + "source_relative_path": "api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.yml", "output": { ".html": { - "relative_path": "api/Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html" + "relative_path": "api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html" } }, "version": "", "Uid": null, "IsMRef": true, - "Title": "Hi.Common.XmlUtils.XFactory.GenByXElementDelegate", - "Summary": "

    Delegate for generating objects from XML elements with relative file path.

    \n" + "Title": "Hi.Common.XmlUtils.XFactory.XGeneratorDelegate", + "Summary": "

    Delegate for generating objects from XML elements with relative file path.

    \n" }, { "type": "ManagedReference", @@ -9908,6 +9908,20 @@ "Title": "Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType", "Summary": "

    Fanuc #5003: Cutter compensation startup/cancellation type.

    \n" }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency", + "Summary": "

    Watchdog for Fanuc Custom Macro B GOTO loops. Holds a\n limit (XML-persisted user config —\nthe soft cap above which the upcoming\nFanucGotoSyntax stops firing and emits a warning) plus a\nruntime per-target hit counter ( — not\nserialised, cleared at session start by\n).

    \n

    \nThe dependency is syntax-managed: FanucGotoSyntax reads the\nlimit, increments the counter, and decides whether to fire. There is\nno host Func provider — the dep is placed in\n rather than\n because nothing outside the\nsyntax pipeline writes it; is a plain method call\nthe runner invokes, not a host-wired Func.\n

    \n

    \nThe counter key is (FileName, TargetN) where FileName\nis the source-level file path of the block containing the GOTO (the\nrelative path form carried on — same\nform used by IndexedFileLine labels). Source-level keying means\nmultiple inline invocations of the same subprogram pool their counts\n(they ARE the same source-code GOTO), while two different files with\ntheir own N100 stay isolated (they ARE different jumps).\n

    \n

    \nDefault is 1000 — a runaway-loop\nguard, not a precise iteration budget. Legitimate macro loops\n(multi-hole drill matrices, calibration sweeps) sit well below this;\ntruly infinite loops hit the limit fast. Projects with batch-style\nmacros that legitimately need higher counts can raise the value in\nthe project XML.\n

    \n" + }, { "type": "ManagedReference", "source_relative_path": "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.yml", @@ -9948,7 +9962,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup", - "Summary": "

    Fanuc-side adapter that exposes a wrapped \nas an following Fanuc Memory C tool offset\naddressing: #2001+N → effective height of offset N\n(geometry − wear).

    \n

    \nThe underlying stays brand-neutral —\nHeidenhain / Siemens can use the same storage with different addressing\nby registering their own adapter alongside the table. Holds a reference\nto the table rather than owning data so writes through the table show\nup immediately in lookups via this adapter.\n

    \n" + "Summary": "

    Fanuc-side adapter that exposes a wrapped \n(resolved at call time from the dependency list) as an\n following Fanuc Memory C tool\noffset addressing: #2001+N → effective height of offset N\n(geometry − wear).

    \n

    \nThe underlying stays brand-neutral —\nHeidenhain / Siemens can use the same storage with different addressing\nby registering their own adapter alongside the table. Stateless: holds\nno reference of its own and resolves the table from the per-call\ndependencies list, so XML round-trip is trivial (an empty element).\n

    \n

    \nRegistered on a brand preset's\nVariableEvaluatorSyntax.RuntimeVariableLookups, not on\n — the wrapper owns no\nlong-lived data, only the Fanuc-style id addressing scheme. The\nunderlying still lives in\nNcDependencyList as the data dependency.\n

    \n" }, { "type": "ManagedReference", @@ -10482,6 +10496,20 @@ "Title": "Hi.NcParsers.Dependencys", "Summary": null }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.CallStackUtil", + "Summary": "

    Push / pop helpers for the per-block section.\nBoth produce a fresh deep-cloned ready to\nstamp onto an inlined piece (push site) or onto an M99 return block\n(pop site); the caller is responsible for deep-cloning again if it\ndistributes the same stamp across multiple pieces of an L-repetition.

    \n

    \nPairs with at the\nLogic stage: explicit push / pop writes seed the section at frame\nboundaries, ModalCarry copies it forward to every block in between\nso each block is self-contained for cache-dump readers and downstream\nconsumers (notably M99 P{seq} reading the top frame's\n).\n

    \n" + }, { "type": "ManagedReference", "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.EvalResult.yml", @@ -10508,7 +10536,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.Evaluation.IRuntimeVariableLookup", - "Summary": "

    Stateless variable lookup that needs per-block runtime context — the\ncurrent node (for \ntraceback into runtime-state sections like MachineCoordinateState\n/ ProgramXyz) and the dependency list (so the lookup can read\nfrom sibling dependencies without holding a static reference).

    \n

    \nDistinguished from : that one is for\nlong-lived dependencies that already hold their own data (parameter\ntables, tool-offset wrappers, retained-variable tables) and need no\nblock context. IRuntimeVariableLookup is for context-sensitive\nresolutions configured declaratively on\n.\n

    \n

    \nImplementations should be brand-specific (e.g. Fanuc #5001-#5043\nposition reads) and return null for keys outside their range so\nthe evaluator's chain can fall through to the next lookup.\n

    \n" + "Summary": "

    Stateless variable lookup that needs per-block runtime context — the\ncurrent node (for \ntraceback into runtime-state sections like MachineCoordinateState\n/ ProgramXyz) and the dependency list (so the lookup can read\nfrom sibling dependencies without holding a static reference).

    \n

    \nDistinguished from : that one is for\nlong-lived dependencies that already hold their own data (parameter\ntables, tool-offset wrappers, retained-variable tables) and need no\nblock context. IRuntimeVariableLookup is for context-sensitive\nresolutions configured declaratively on\n.\n

    \n

    \nImplementations should be brand-specific (e.g. Fanuc #5001-#5043\nposition reads) and return null for keys outside their range so\nthe evaluator's chain can fall through to the next lookup.\n

    \n

    \nImplementations are XML-serialised as part of\n's round-trip: each impl exposes a\nstatic XName, registers itself with ,\nand implements . Since impls\nare stateless, the typical body is just an empty element carrying the\ntype name; brand identity is restored by XFactory dispatch.\n

    \n" }, { "type": "ManagedReference", @@ -10536,7 +10564,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup", - "Summary": "

    Reads Fanuc-style local macro variables (#1-#33) from\nVars.Local on the current JSON,\nwalking until the entry\nis found. Self-gates the id range so the evaluator's\n chain can\nfall through to the next lookup for out-of-range keys.

    \n

    \nStateless and dependency-free — instances are interchangeable.\n

    \n" + "Summary": "

    Reads Fanuc-style local macro variables (#1-#33) from\nVars.Local on the current JSON,\nfalling back to the immediately previous block when they share the\nsame id. Self-gates the id range\nso the evaluator's\n chain can\nfall through to the next lookup for out-of-range keys.

    \n

    \nTwo-step lookup (mirrors ): the\ncurrent block sees writes that \nstamped at inline time (the call-line argument bindings) and writes\nthat \napplied on this block before the lookup runs; the previous block\n(frame-checked) supplies body-internal writes from the prior block in\nthe same macro frame. Looking past the previous block is unnecessary\nbecause the reader carries forward block-by-block within a frame.\n

    \n

    \nFrame isolation via : a previous\nblock whose frame id differs from the current block's is skipped —\na macro body's body-internal locals are invisible to the caller after\nreturn, and the caller's main-frame locals are invisible inside the\nmacro. M98/M198 subprogram inlining\n() deliberately\ndoes not stamp on its\ninlined blocks, so the callee inherits the caller's frame and sees\nthe caller's locals — matching real Fanuc M98 semantics.\n

    \n

    \nStateless and dependency-free — instances are interchangeable.\n

    \n" }, { "type": "ManagedReference", @@ -10550,7 +10578,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr", - "Summary": "

    Binary arithmetic on two operands (+ - * / or MOD).

    \n" + "Summary": "

    Binary operation on two operands. Covers arithmetic\n(+ - * / / MOD), comparison\n(EQ NE GT GE LT LE, yielding 1.0 / 0.0), and\nlogical bitwise (AND OR XOR, operands truncated to\n).

    \n" }, { "type": "ManagedReference", @@ -10592,7 +10620,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator", - "Summary": "

    Walks an AST and produces an .\nResolves #nnn via an ; built-in function\nnames are matched case-insensitively against a fixed table.

    \n

    \nPhase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN\nEXP POW. Trigonometric arguments and results are in degrees, matching\nFanuc Custom Macro B convention. Unknown function names surface as\n; arity mismatches as\n; division / MOD by zero and domain\nerrors (e.g. SQRT[-1]) as ; vacant\noperands as .\n

    \n" + "Summary": "

    Walks an AST and produces an .\nResolves #nnn via an ; built-in function\nnames are matched case-insensitively against a fixed table.

    \n

    \nPhase-1 supports: SIN COS TAN ASIN ACOS ATAN SQRT ABS ROUND FIX FUP LN\nEXP POW. Trigonometric arguments and results are in degrees, matching\nFanuc Custom Macro B convention. Unknown function names surface as\n; arity mismatches as\n; division / MOD by zero and domain\nerrors (e.g. SQRT[-1]) as ; vacant\noperands as .\n

    \n

    \nNumeric domain & type conventions. All values are IEEE 754\n — there is no separate bool / int type at runtime.\nComparison ops (EQ NE GT GE LT LE) yield 1.0 (true) or\n0.0 (false), using strict double equality / ordering (NaN\ncompares as IEEE specifies — NaN EQ NaN is 0.0). Logical\nops (AND OR XOR) truncate each operand to a 64-bit signed\ninteger ( then cast to\n) before applying the bitwise operation; non-finite\nor out-of-range operands surface rather\nthan silently wrapping. Truthiness at caller-side IF / WHILE\ngates is value != 0 — any non-zero value (bit, float, comparator\nresult) is true.\n

    \n" }, { "type": "ManagedReference", @@ -10606,7 +10634,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionParser", - "Summary": "

    Recursive-descent parser for Fanuc Custom Macro B value expressions.\nPure: takes a string, produces an AST. Performs no\nvariable lookup and no evaluation.

    \n

    Grammar (highest precedence last):

    \n
    expr    := term (('+' | '-') term)*\nterm    := factor (('*' | '/' | 'MOD') factor)*\nfactor  := ('+' | '-')? primary\nprimary := number\n        | '#' integer\n        | '#' '[' expr ']'\n        | '[' expr ']'\n        | ident '[' arglist ']' ('/' '[' expr ']')?\narglist := expr (',' expr)*
    \n

    \nFunction names are case-insensitive (SIN = sin); whitespace\nis skipped between tokens. The '/' '[' expr ']' tail captures the\ndual-bracket form Fanuc uses for ATAN[a]/[b]; non-ATAN callers that\nhappen to use it produce a function with an extra arg, which the evaluator\nrejects with an arity error.\n

    \n" + "Summary": "

    Recursive-descent parser for Fanuc Custom Macro B value expressions.\nPure: takes a string, produces an AST. Performs no\nvariable lookup and no evaluation.

    \n

    Grammar (lowest precedence at top):

    \n
    expr     := or-expr\nor-expr  := and-expr (('OR' | 'XOR') and-expr)*\nand-expr := cmp-expr ('AND' cmp-expr)*\ncmp-expr := add-expr (('EQ' | 'NE' | 'GT' | 'GE' | 'LT' | 'LE') add-expr)*\nadd-expr := term (('+' | '-') term)*\nterm     := factor (('*' | '/' | 'MOD') factor)*\nfactor   := ('+' | '-')? primary\nprimary  := number\n         | '#' integer\n         | '#' '[' expr ']'\n         | '[' expr ']'\n         | ident '[' arglist ']' ('/' '[' expr ']')?\narglist  := expr (',' expr)*
    \n

    \nFunction names and keyword operators (MOD, EQ NE GT GE LT LE,\nAND OR XOR) are case-insensitive (SIN = sin,\nEQ = eq); each keyword requires a non-identifier character\non its right boundary so EQ1 is not the EQ operator\nfollowed by 1. Whitespace is skipped between tokens. The\n'/' '[' expr ']' tail captures the dual-bracket form Fanuc uses\nfor ATAN[a]/[b]; non-ATAN callers that happen to use it produce a\nfunction with an extra arg, which the evaluator rejects with an arity\nerror.\n

    \n

    \nOperator precedence intentionally puts boolean / logical layers below\narithmetic so #1 + 1 GT 0 parses as (#1 + 1) GT 0 and\n#1 GT 0 AND #2 LT 10 parses as (#1 GT 0) AND (#2 LT 10),\nmatching the Fanuc Custom Macro B spec for IF [..] GOTO /\nIF [..] THEN / WHILE [..] DO conditions.\n

    \n" }, { "type": "ManagedReference", @@ -10704,7 +10732,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup", - "Summary": "

    Reads Fanuc-style non-retained common variables (#100-#499)\nfrom Vars.Volatile on the current \nJSON, walking until the\nentry is found. Self-gates the id range so the evaluator's\n chain can\nfall through to the next lookup for out-of-range keys.

    \n

    \nStateless and dependency-free — instances are interchangeable.\nReads use the same dict-merge carry that\n writes; the two stay\ndecoupled (read side here; write side in the reader).\n

    \n" + "Summary": "

    Reads Fanuc-style non-retained common variables (#100-#499)\nfrom Vars.Volatile. Self-gates the id range so the evaluator's\n chain can\nfall through to the next lookup for out-of-range keys.

    \n

    \nSingle-step lookup: already\ndict-merges every block's Vars.Volatile into the next block, so\nthe entry — if it exists — must be on the current block (when this\nlookup runs after the reader) or on the immediately previous block\n(when this lookup runs before the reader on the same block, which is\nthe Fanuc preset's order — evaluator first, reader second). No\narbitrary walk-back: such a walk would be defensive overkill given\nthe reader's carry guarantee.\n

    \n

    \nStateless and dependency-free — instances are interchangeable. Reads\nstay decoupled from the reader (read side here; write side in the\nreader).\n

    \n" }, { "type": "ManagedReference", @@ -10722,17 +10750,185 @@ }, { "type": "ManagedReference", - "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.yml", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.yml", "output": { ".html": { - "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html" + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html" } }, "version": "", "Uid": null, "IsMRef": true, - "Title": "Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax", - "Summary": "

    Consumes Fanuc-style system-control variable assignments\n(#3000-#3999) — alarm trigger (#3000), millisecond and\nhour clocks (#3001 / #3002), single-block / feed-hold\nbypass flags (#3003 / #3004), pause-with-message\n(#3006), mirror-image flags (#3007), date / time\n(#3011 / #3012), tool-life data (#3030 /\n#3032), etc.

    \n

    \nEvery id in this range is a controller-side state variable — its\nauthoritative value lives on the real hardware (RTC, alarm bus,\noverride switches, …) and an NC write at most triggers a side effect\n(clock reset, alarm raise, message-pause prompt). Offline simulation\nhas none of that machinery, so this syntax does not emulate the\neffect. Instead it:\n

    \n
    1. records the literal write on the block JSON under\nVars.SystemControl (round-trip and cache-dump visibility);
    2. emits a FanucSystemControl--Unsupported\n\nso the user knows the assignment was recognised but its controller-side\neffect is not simulated. Message-severity (not Warning) because these\nwrites are safe no-ops offline — every consumed assignment would emit\na Warning per block, which would be noisy without signalling anything\nthe user must act on;
    3. removes the entry from Parsing.Assignments so it does not\nre-surface as a generic Parsing--Unconsumed diagnostic.
    \n

    \nThe dictionary carries forward block-by-block (same dict-merge pattern\nas ) so a downstream consumer\ncan read the most recent recorded value via SyntaxPiece linkage.\n

    \n

    \nOnly literal numeric RHS values are consumed; non-literal RHS\n(e.g. #3002 = #500) is left in Parsing.Assignments for\n to resolve, mirroring the\nretained / volatile reading syntaxes.\n

    \n

    \nFanuc-family only — Siemens uses named system variables\n($AC_TIME, $A_DAY, …) and Heidenhain uses\nFN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.\n

    \n" + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax", + "Summary": "

    Resolves Fanuc Custom Macro B GOTO control flow.\nTriggered by Parsing.FanucGoto (written by\n); decides whether\nto fire, and on fire calls\n on layers[0] with\nthe re-segmented file content starting at the matching N{target}\nlabel. The host block stays materialised (so cache dumps still see the\nGOTO call site); execution naturally continues from the new source\nonce the pipeline pulls the next block.

    \n

    \nBoth unconditional GOTO <n> and conditional\nIF [<expr>] GOTO <n> are implemented. The conditional\nform leans on 's pass-2 tree walk\nto substitute Parsing.FanucGoto.Condition with a numeric\n when the expression\nevaluates successfully — then reads the\nnode polymorphically. Truthy non-zero fires the redirect; zero falls\nthrough silently; a still-string (unresolved) Condition emits\nFanucGoto--ConditionNotEvaluated and falls through.\n

    \n

    \nPipeline placement: tail of the Fanuc / Mazak / Syntec Evaluation\nbundle. Must run after so any\n#<var> in the target N (e.g. GOTO #1) has been\nsubstituted to a literal in Parsing.FanucGoto.N. Reader syntaxes\n( etc.) are independent —\nthey touch Parsing.Assignments, not Parsing.FanucGoto.\n

    \n

    \nLabel scanning uses two hosted helper syntaxes —\nCommentSyntax and IndexSyntax — applied to\neach candidate block in turn so the predicate\nIndexNote.Number == target matches the same way the Parsing\nbundle would. Both are XML-IO-able so API customers can swap them\n(e.g. for a controller variant using ;-style comments or a\ndifferent head symbol). Defaults match Fanuc: \nand with the \"N\" symbol.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax", + "Summary": "

    Resolves Fanuc Custom Macro B IF [<cond>] THEN <body>\nsingle-block conditionals. Triggered by Parsing.FanucIfThen\n(written by );\nreads the now-resolved node, decides\nwhether to fire, and on fire lifts the parsing-stage\nPendingAssignments sub-object into the canonical\nParsing.Assignments bucket so the brand-specific reader syntaxes\ndownstream route each entry to its store the same way they would handle\nan unconditional #nnn = <literal> on a normal block.

    \n

    \nUnlike there is no source splice, no\nlabel scan, no iteration watchdog — the spec restricts the body to the\ncurrent block. The host block is preserved either way (the stamped\nFanucIfThen section on the host's top-level JSON keeps the\nIF-THEN call site visible to cache dumps and diagnostics, with\n flipped true only on a successful\nfire).\n

    \n

    \nPipeline placement: in the Evaluation bundle after\n (so the Condition expression has\nbeen substituted in place by pass-2 tree walk, and each\nPendingAssignments RHS string has been evaluated to a numeric\n) and before the reader syntaxes\n(,\n,\n,\n) — that ordering lets\nthe lifted entries reach the readers as if they had been written by\n on a normal block.\n

    \n

    \nThree condition outcomes mirror the\n shape:\n

    • Truthy non-zero → lift assignments, stamp Applied=true.
    • Truthy zero → fall through silently, Applied=false.
    • Truthy null (evaluator failed, condition still a string or\n non-finite) → warn FanucIfThen--ConditionNotEvaluated, do not\n lift, Applied=false.
    \nA truthy condition with no PendingAssignments (body did not parse as\none or more assignments — e.g. a G-code body, currently unsupported)\nwarns FanucIfThen--UnsupportedBody and falls through.\n\n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax", + "Summary": "

    Routes literal-RHS assignments to Fanuc-style local macro variables\n(#1-#33) from Parsing.Assignments into Vars.Local\non the current block, carrying the previous block's Vars.Local\ndict forward when both blocks share the same\n id. Mirrors\n for the\n#100-#499 range, with two differences:

    \n
    • Carry is gated by equality, so a\ncaller block after a G65 return does not inherit the macro body's\nfinal locals.
    • Writes outside a macro frame (a main-program block doing\n#11 = 5) emit\nLocalVariable--MainFrameWriteUnsupported and consume the\nassignment without persisting — real Fanuc allows main-frame local\nwrites but this simulator only tracks locals inside G65/G66 call\nframes; surfacing the gap as a diagnostic is more informative than\na silent\n hit.
    \n

    \nPipeline placement: Evaluation bundle, after\n (so any expression RHS such as\n#11 = #1 + 1 has already been normalised to a literal by the\ntime this reader runs) and after the other range readers\n(,\n) so they all share a\nsimilar Reader-stage shape.\n

    \n

    \nOnly literal numeric RHS values are consumed here; non-literal\nentries (which can only persist if\n failed to resolve them) are\nleft untouched and surface via the evaluator's own\nVariableExpression--Unevaluated diagnostic plus\n.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap", + "Summary": "

    Fanuc Custom Macro B Type-I argument-letter map: which call-line letter\nbinds to which Vars.Local id (#1-#26) inside the macro body.\nReserved letters (G, L, N, O, P) are\nabsent — they are consumed by the call itself, not passed through.

    \n

    \nUsed by (G65, one-shot) and\n (G66, modal) to translate the\nargument letters captured by \n/ into the\n#nnn bindings the macro body's expression evaluator can read.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax", + "Summary": "

    Inlines a Fanuc Custom Macro B one-shot call (G65 P_ L_ [letter\nvalue …]) into the source layer and binds the call-line argument\nletters to Vars.Local #1-#26 per the Type-I map (see\n). Every inlined block carries the\nbinding dict, a clone of the diagnostic\nrecord, and a id stamp — so\nLocalVariableLookup resolves arg references in a\nsingle-block lookup, a cache dump landing on any block immediately\nshows which call it belongs to, and downstream\n carries body-internal\n#1-#33 writes forward only within the same frame. The host\nblock itself records but stays in the\ncaller's frame (no stamp) and emits no\nmotion act; after the macro body's last inlined block the pipeline\ncontinues naturally into the caller's next block (the inlined pieces\nsit ahead of the host block's successor in layers[0]).

    \n

    \nFrame isolation works on two layers. Statically, caller blocks\nhave no stamp (frame id 0 by\n), so the inlined frame ids (allocated\nfresh per L-repetition) never collide with main. Dynamically,\nLocalVariableLookup and\n compare frame ids\nbefore carrying any Vars.Local entry across a block boundary\n— a macro body's body-internal writes therefore stay inside the\nmacro and never leak back into the caller's frame.\n

    \n

    \nFilename lookup mirrors :\nO{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},\n{P:D4}.NC, {P}.NC — first match wins. The lookup root\nis (G65 has no\n\"external storage\" variant; M198's external root is M98/M198-only).\n

    \n

    \nL > 1 inlines the same macro L times in series. Each\nrepetition is a fresh segmentation pass (so each block gets its own\n JSON object — the downstream pipeline\nmutates JSON in place and would clobber sibling repetitions if\ninstances were shared) and gets a fresh FileIndex (so\n(FileIndex, LineIndex) pairs stay unique across the\nL-copies of the same source lines).\n

    \n

    \nPipeline placement: ahead of inside\nthe Fanuc Evaluation \nso a hypothetical G65 P_ + M98 P_ on the same block\nexpands the G65 macro first (would be an unusual but legal\ncomposition). Detection is on the Parsing.G65 sub-object\nwritten by \n(a ) — the\nkeyword \"G65\" never reaches Parsing.Flags because the\nparameterized match has already consumed the text by the time\n runs.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase", + "Summary": "

    Identifies which pipeline phase the instance runs in. The two\nvalues correspond to the Evaluation-bundle and PostLogic-bundle\nregistrations of this same syntax class.

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax", + "Summary": "

    Handles Fanuc Custom Macro B modal-call lifecycle (G66 setup,\nG67 cancel, and per-motion-block implicit macro invocation).\nThe same class is registered twice in the pipeline via\n — once in the Evaluation bundle\n(, captures G66/G67 edges and carries\nthe state block-to-block) and once in\nthe PostLogic bundle (, on every\nmotion block within an active G66 modal, inlines the macro body via\nthe same mechanism uses).

    \n

    \nKeeping both phases in one class makes the pairing visually explicit:\nreaders see \"G66 in one file\" and the two methods (DoSetup,\nDoExpansion) make the lifecycle obvious. The two factory\nhelpers (, ) mirror the\nModalCarrySyntax.Logic / .PostLogic pattern already in\nthe codebase.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax", + "Summary": "

    Consumes Fanuc-style system-control variable assignments\n(#3000-#3999) — alarm trigger (#3000), millisecond and\nhour clocks (#3001 / #3002), single-block / feed-hold\nbypass flags (#3003 / #3004), pause-with-message\n(#3006), mirror-image flags (#3007), date / time\n(#3011 / #3012), tool-life data (#3030 /\n#3032), etc.

    \n

    \nEvery id in this range is a controller-side state variable — its\nauthoritative value lives on the real hardware (RTC, alarm bus,\noverride switches, …) and an NC write at most triggers a side effect\n(clock reset, alarm raise, message-pause prompt). Offline simulation\nhas none of that machinery, so this syntax does not emulate the\neffect. Instead it:\n

    \n
    1. records the literal write on the block JSON under\nVars.SystemControl (round-trip and cache-dump visibility);
    2. emits a FanucSystemControl--Unsupported\n\nso the user knows the assignment was recognised but its controller-side\neffect is not simulated. Message-severity (not Warning) because these\nwrites are safe no-ops offline — every consumed assignment would emit\na Warning per block, which would be noisy without signalling anything\nthe user must act on;
    3. removes the entry from Parsing.Assignments so it does not\nre-surface as a generic Parsing--Unconsumed diagnostic.
    \n

    \nThe dictionary carries forward block-by-block (same dict-merge pattern\nas ) so a downstream consumer\ncan read the most recent recorded value via SyntaxPiece linkage.\n

    \n

    \nOnly literal numeric RHS values are consumed; non-literal RHS\n(e.g. #3002 = #500) is left in Parsing.Assignments for\n to resolve, mirroring the\nretained / volatile reading syntaxes.\n

    \n

    \nFanuc-family only — Siemens uses named system variables\n($AC_TIME, $A_DAY, …) and Heidenhain uses\nFN18: SYSREAD; neither flows through Parsing.Assignments.#nnn.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.Fanuc", + "Summary": null + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil", + "Summary": "

    Shared “re-segment a file and skip pieces until a label matches”\nscan, used by both\n (unconditional GOTO redirect)\nand (M99 P{seq} jump\ninto the caller file). Reads the file via\n, segments through the\nprovided , runs the\nprobeSyntaxes on each candidate block to\nextract IndexNote.Number, and returns the slice from the\nfirst matching block to EOF.

    \n

    \nReturns null when no block matches — the caller's\nresponsibility to surface the appropriate diagnostic. The probes\nare idempotent because the downstream Parsing bundle re-runs the\nsame syntaxes on the yielded pieces with no-op effect (the regex\npatterns no longer match once the N-prefix is consumed and the\nparenthesised comment stripped).\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile", + "Summary": "

    Tri-form resolution result. is the bare\nmatched name; is that name joined with the\nfolder portion of the dependency (relative when the folder is\nconfigured relative, absolute fallback when it isn't);\n is the fully-resolved I/O target.

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver", + "Summary": "

    Shared subprogram-/macro-file resolver for Fanuc-style O<n>\nlookups consumed by (M98 / M198)\nand (G65). Single helper so the three\npath forms — file name, project-relative path, absolute path — are\nproduced together at one site and each caller gets exactly the form\nit should consume:

    \n
    • — bare O####.NC form\nthe resolver matched. Stored in JSON sections (FanucMacroCall,\nSubProgramCall) as the structural NC-language identifier;\nindependent of which folder the dependency happened to be pointing\nat, so the JSON stays portable across environments.
    • — relative path against the\nproject base directory (e.g. \"NC/O1234.NC\"). Used as the\n label so diagnostics on inlined blocks\nalign with the relative form already used for the main file label.
    • — absolute path. Used only\nat the call site for actual disk I/O; never\npersisted, never returned to JSON. Lives inside the resolver's stack\nframe and the segmenter's enumeration.
    \n

    \nFilename lookup order (first match wins) mirrors real Fanuc fallback:\nO{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},\n{P:D4}.NC, {P}.NC. Case-insensitive match is delegated\nto the host filesystem (Windows is, Linux is not).\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil", + "Summary": "

    Shared inline mechanism for Fanuc Custom Macro B body expansion —\nused by both (one-shot) and\n's expansion phase (modal trigger). Both\ncallers do the same three things on every produced\n: stamp a \nclone, stamp a fresh id, and stamp\nargument bindings into Vars.Local. Centralising lets the two\ncall sites stay in lock-step — frame allocation, file-index\nallocation, and the inline-piece JSON shape are guaranteed\nidentical.

    \n

    \nFrame ids share the same \ncounter as file indices — both just need within-session uniqueness\nand the counter is rewound on session start in lock-step with the\npipeline. The main NC file is allocated index 0 first, so all\ninline frame ids land at > 0 and never collide with main.\n

    \n" }, { "type": "ManagedReference", @@ -10760,7 +10956,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.SubProgramCallSyntax", - "Summary": "

    Inlines a Fanuc-style subprogram into the source layer when an M98 or\nM198 host block is reached. M98 P_ L_ reads the matching\nO<P> file from ;\nM198 P_ reads from \n(Fanuc external-storage call — same mechanism as M98, different lookup\nroot). The file is segmented through the host runner's segmenter\n() and the resulting\ns are prepended into layers[0] via\n; the rest of the\npipeline picks them up through ordinary walkNode.Next\ntraversal as if they had always been part of the host file.

    \n

    \nPipeline placement: first child of the Fanuc Evaluation\n. By the time this runs,\n /\n\n(each a ) have written a\nParsing.M98 / Parsing.M198 sub-object carrying the\ncaptured P / L parameters. Note: those sub-objects\nare this syntax's only trigger — \"M98\" / \"M198\"\nnever reach Parsing.Flags, because the parameterized\nmatch has already consumed the text by the time\n runs.\n

    \n

    \nFilename lookup uses a fallback chain:\nO{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},\n{P:D4}.NC, {P}.NC — first match wins. Case-insensitive\nmatch is delegated to the host filesystem (Windows is, Linux is not).\n

    \n

    \nL > 1 inlines the same subprogram L times in series. Each\nrepetition is a fresh segmentation pass so each block gets its own\n with an independent JSON object — the\ndownstream pipeline mutates JSON in place and would clobber sibling\nrepetitions if instances were shared.\n

    \n

    \nNot yet supported: M99 P{seq} early return inside a\nsubprogram, partial-program calls (M98 P{seq}{prog} split\nencoding), and arg binding (G65 macro is a separate syntax).\n

    \n" + "Summary": "

    Inlines a Fanuc-style subprogram into the source layer when an M98 or\nM198 host block is reached. M98 P_ L_ reads the matching\nO<P> file from ;\nM198 P_ reads from \n(Fanuc external-storage call — same mechanism as M98, different lookup\nroot). The file is segmented through the host runner's segmenter\n() and the resulting\ns are prepended into layers[0] via\n; the rest of the\npipeline picks them up through ordinary walkNode.Next\ntraversal as if they had always been part of the host file.

    \n

    \nPipeline placement: first child of the Fanuc Evaluation\n. By the time this runs,\n /\n\n(each a ) have written a\nParsing.M98 / Parsing.M198 sub-object carrying the\ncaptured P / L parameters. Note: those sub-objects\nare this syntax's only trigger — \"M98\" / \"M198\"\nnever reach Parsing.Flags, because the parameterized\nmatch has already consumed the text by the time\n runs.\n

    \n

    \nFilename lookup uses a fallback chain:\nO{P:D4}.NC, O{P}.NC, O{P:D4}, O{P},\n{P:D4}.NC, {P}.NC — first match wins. Case-insensitive\nmatch is delegated to the host filesystem (Windows is, Linux is not).\n

    \n

    \nL > 1 inlines the same subprogram L times in series. Each\nrepetition is a fresh segmentation pass so each block gets its own\n with an independent JSON object — the\ndownstream pipeline mutates JSON in place and would clobber sibling\nrepetitions if instances were shared.\n

    \n

    \nNot yet supported: M99 P{seq} early return inside a\nsubprogram and partial-program calls (M98 P{seq}{prog} split\nencoding). Custom Macro B argument-binding calls (G65 /\nG66 / G67) live in and\n — those handle the\nargument-letter-to-#1..#26 binding and the macro-call frame\nisolation that M98 deliberately does not provide.\n

    \n" }, { "type": "ManagedReference", @@ -10774,7 +10970,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax", - "Summary": "

    Consumes Fanuc-style M99 subprogram-return blocks.

    \n

    \nIn the inline model used by , a\nplain M99 at the end of a subprogram is implicit: the\ninlined blocks are followed in layers[0] by the caller's\nnext block, so the natural pipeline traversal already does the\n\"return\". This syntax therefore only consumes the M99 flag (so\n doesn't warn)\nand records a section for cache-dump\nvisibility.\n

    \n

    \nM99 P{seq} (return to caller's N{seq} sequence\nnumber) is captured in but not yet\nhonoured — the subprogram tail still proceeds straight into the\ncaller's next block. Implementing the jump requires a forward scan\nof the post-host caller blocks for a matching N{seq} head\nindex, then dropping the intervening blocks; deferred until the\ncaller-side walk semantics are designed.\n

    \n

    \nPipeline placement: anywhere after Parsing has populated\nParsing.M99. Conventionally placed alongside\n at the head of the Evaluation\nbundle so call/return live next to each other.\n

    \n

    \nDetection is on the Parsing.M99 sub-object written by\n\n(a ) — the keyword\n\"M99\" never reaches Parsing.Flags because the\nparameterized match has already consumed the text by the time\n runs.\n

    \n" + "Summary": "

    Consumes Fanuc-style M99 subprogram-return blocks and pops\none frame. Plain M99 relies on the\nnatural pipeline tail — the inlined body's last block is followed\nin layers[0] by the caller's next block, so the “return”\nhappens implicitly; this syntax only consumes the M99 trigger (so\n doesn't warn),\nstamps a diagnostic section, and\nwrites the popped for downstream blocks to\ncarry.

    \n

    \nM99 P{seq} additionally redirects control flow to the\ncaller's N{seq} block via\n. The caller's file is\nresolved from the popped frame's\n; the scan uses the same\n helper as\n, with hardcoded Fanuc-default\nprobes ( + \nwith symbol \"N\") because the M99 P semantic itself is\nFanuc-family-only and Mazak / Syntec follow the same conventions.\nThe iteration is counted against\n, sharing the same\nrunaway-loop guard as GOTO — keyed on the same\n(FileName, TargetN) bucket so a tight\nM98 → M99 P → M98 … loop trips the same threshold.\n

    \n

    \nPipeline placement: same Evaluation bundle slot it always occupied,\nright after at the head. Needs\n,\n,\n,\n,\n on the dep list when\nM99 P{seq} is to fire; without them the plain-M99 path still\nworks and the P-jump emits a configuration warning.\n

    \n

    \nDetection is on the Parsing.M99 sub-object written by\n\n(a ) — the keyword\n\"M99\" never reaches Parsing.Flags because the\nparameterized match has already consumed the text by the time\n runs.\n

    \n" }, { "type": "ManagedReference", @@ -10788,7 +10984,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax", - "Summary": "

    Pure expression normalizer for Custom Macro B syntax. Walks the\nparser-stage residue on a single block and inlines numeric values\nwherever a Fanuc-style variable reference or bracket expression\nappears — but does not write to any specific store. Routing\n“where the resolved literal lands” stays in the brand-specific\nreader syntaxes (,\n's reader,\n, …) which run\nafter this syntax on the same block.

    \n

    \nTwo passes per block:\n

    \n
    1. \nAssignments normalizeParsing.Assignments.#nnn entries\nwhose RHS is non-literal (e.g. \"#500+1\", \"SQRT[#100]\")\nare evaluated via the and the RHS string is\nreplaced with the resolved literal (round-trip-safe\n\"R\"-format). The entry stays in Parsing.Assignments so\ndownstream reader syntaxes consume it as a pure-literal assignment.\nIteration follows source order (Parsing.Assignments insertion order).\n
    2. \nParsing tree substitution — every string-typed value reachable\nfrom Parsing.<tag> (axis tags, canned-cycle sub-objects)\nis parsed; on a successful evaluation the string is replaced with a\nnumeric . Failures silently leave the original\nstring and rely on downstream\n at consumer sites to surface\nVariableExpression--Unevaluated only if the tag is actually read.\n
    \n

    \nLookup chain (first non-null wins, configured per brand preset via\n + \ninstances on NcDependencyList):\n

    \n
    1. Current block's own resolved assignments — built-in to\n; covers same-block forward references in\nsource order (an earlier #nnn=literal is visible to a later\nRHS that mentions #nnn).
    2. Each in\n, in list order. Typical contents\nfor a Fanuc-family preset:\n (#1-#33),\n (#100-#499),\n\n(#5001-#5043).
    3. Each on the runner's\nNcDependencyList, in registration order\n(,\n,\n).
    \n

    \nEach lookup self-gates its id range; the evaluator stays brand- and\nrange-agnostic. Adding a new variable surface is additive: register\nan on a dependency or push an\n onto the per-preset list.\n

    \n

    \nSame-block forward reference — when an Assignment RHS\nreferences a #nnn that is also being assigned later in\nthe same block (i.e. listed in Parsing.Assignments after the\nRHS being evaluated), the cannot pick up\nthe not-yet-resolved value and falls back to traceback /\ndependency-table reads — effectively the pre-block value. A\nVariableEvaluator--SameBlockForwardReference warning is\nemitted per such RHS so the user is told the source-order semantics\nwere not honoured. Practical impact is near-zero for typical\nCAM-emitted NC (one assignment per line).\n

    \n" + "Summary": "

    Pure expression normalizer for Custom Macro B syntax. Walks the\nparser-stage residue on a single block and inlines numeric values\nwherever a Fanuc-style variable reference or bracket expression\nappears — but does not write to any specific store. Routing\n“where the resolved literal lands” stays in the brand-specific\nreader syntaxes (,\n's reader,\n, …) which run\nafter this syntax on the same block.

    \n

    \nTwo passes per block:\n

    \n
    1. \nAssignments normalizeParsing.Assignments.#nnn entries\nwhose RHS is non-literal (e.g. \"#500+1\", \"SQRT[#100]\")\nare evaluated via the and the RHS string is\nreplaced with the resolved literal (round-trip-safe\n\"R\"-format). The entry stays in Parsing.Assignments so\ndownstream reader syntaxes consume it as a pure-literal assignment.\nIteration follows source order (Parsing.Assignments insertion order).\n
    2. \nParsing tree substitution — every string-typed value reachable\nfrom Parsing.<tag> (axis tags, canned-cycle sub-objects)\nis parsed; on a successful evaluation the string is replaced with a\nnumeric . Failures silently leave the original\nstring and rely on downstream\n at consumer sites to surface\nVariableExpression--Unevaluated only if the tag is actually read.\n
    \n

    \nLookup chain (first non-null wins, configured per brand preset via\n + \ninstances on NcDependencyList):\n

    \n
    1. Current block's own resolved assignments — built-in to\n; covers same-block forward references in\nsource order (an earlier #nnn=literal is visible to a later\nRHS that mentions #nnn).
    2. Each in\n, in list order. Typical contents\nfor a Fanuc-family preset:\n (#1-#33),\n (#100-#499),\n\n(#5001-#5043).
    3. Each on the runner's\nNcDependencyList, in registration order\n(,\n,\n).
    \n

    \nEach lookup self-gates its id range; the evaluator stays brand- and\nrange-agnostic. Adding a new variable surface is additive: register\nan on a dependency or push an\n onto the per-preset list.\n

    \n

    \nSame-block forward reference — when an Assignment RHS\nreferences a #nnn that is also being assigned later in\nthe same block (i.e. listed in Parsing.Assignments after the\nRHS being evaluated), the cannot pick up\nthe not-yet-resolved value and falls back to traceback /\ndependency-table reads — effectively the pre-block value. A\nVariableEvaluator--SameBlockForwardReference warning is\nemitted per such RHS so the user is told the source-order semantics\nwere not honoured. Practical impact is near-zero for typical\nCAM-emitted NC (one assignment per line).\n

    \n" }, { "type": "ManagedReference", @@ -10832,6 +11028,48 @@ "Title": "Hi.NcParsers.IGetSentence", "Summary": "

    Abstraction for a source that carries a .

    \n" }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.ISentenceCarrier.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.ISentenceCarrier.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.ISentenceCarrier", + "Summary": "

    Carries a reference to a source together with its\nexecution-order . Used as the\ncross-process alignment carrier for diagnostics, messages, ClStripPos,\nMachiningStep, etc. — both the source content (via\n) and the execution-order position\n(via ) are available without\nneeding two separate references.

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.ISentenceIndexed.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.ISentenceIndexed.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.ISentenceIndexed", + "Summary": "

    Abstraction for an object that carries a —\na 0-based ordinal of its source in NC execution\norder. Use as a cross-process alignment key (messages, ClStripPos,\nMachiningStep, etc.) when source order\n()\nis not enough because SubProgram inline reorders blocks relative to\n(FileIndex, LineIndex).

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.IndexedSentence.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.IndexedSentence.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.IndexedSentence", + "Summary": "

    Minimal pairing a \nwith its execution-order . Use when there is no\nricher host object that already carries the sentence — e.g. CSV-driven\nruns that go straight from an input line to a \nwithout a wrapper.

    \n" + }, { "type": "ManagedReference", "source_relative_path": "api/Hi.NcParsers.Initializers.HomeMcInitializer.yml", @@ -10972,6 +11210,34 @@ "Title": "Hi.NcParsers.Keywords.BlockSkip", "Summary": "

    Optional block skip marker extracted from the head of an NC block.\nISO 6983 / Fanuc calls this feature Block Delete (BDT switch);\nSiemens / Syntec / Mazak use the same / prefix with matching\nbehaviour.

    \n

    \nThe section is only present on blocks that carry a / prefix.\nWhether the block's NC commands are actually skipped at runtime\ndepends on :\n

    • Config absent or the bit OFF → the /\nprefix is consumed, is left null, and the rest of\nthe line parses as a regular NC block (comments still take effect).
    • Config present and the bit ON → the rest\nof the line is moved into and cleared from\nUnparsedText, so downstream parsing syntaxes see nothing and\nno NC action is emitted. Comment syntaxes run before this one so\ncomments (and any embedded CsScript) still take effect.
    \n\nNot a comment: a comment is static metadata, block skip is a runtime\ntoggle that can change per machine/operator setting.\n" }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.Keywords.CallFrame.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.Keywords.CallFrame.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.Keywords.CallFrame", + "Summary": "

    One entry in . Holds the caller-side\ninformation consumers need to “unwind” or “look back” — currently\nonly the relative file path of the caller, used by\n on\nM99 P{seq} to locate the caller's N{seq} block.

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.Keywords.CallStack.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.Keywords.CallStack.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.Keywords.CallStack", + "Summary": "

    JSON-section data shape representing the active call-frame stack on\na block — pushed by call-and-inline syntaxes\n( for M98/M198,\n for G65, and\n's expansion\nphase for G66 implicit triggers) and popped by\n on M99. Every\nblock between push and pop carries the section forward via\n; the caller's blocks\nbefore push and after pop carry the surrounding stack state\n(typically empty when running from the main file).

    \n

    \nThe section is wrapped in a rather than\nexposed as a bare so it fits ModalCarry's\n\"deep-clone JsonObject\" carry pattern — the array of frames lives\ninside .\n

    \n" + }, { "type": "ManagedReference", "source_relative_path": "api/Hi.NcParsers.Keywords.CannedCycle.yml", @@ -11098,6 +11364,62 @@ "Title": "Hi.NcParsers.Keywords.Fanuc", "Summary": null }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.Keywords.FanucGoto.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.Keywords.FanucGoto.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.Keywords.FanucGoto", + "Summary": "

    Fanuc Custom Macro B GOTO record. Stamped on the host block by\n after the control-flow\ndecision has been made; produced earlier by\n as a parsing-stage\nsub-section (Parsing.FanucGoto) carrying the raw captured fields.

    \n

    \nTwo source forms map to the same shape:\n

    • GOTO <n> — unconditional jump. is null.
    • IF [<bool-expr>] GOTO <n> — conditional jump.\n holds the expression text from inside the\n brackets.
    \n\n

    \nAt parsing time is a raw token from the source — it may\nbe a literal (\"100\"), a variable reference (\"#1\"), or a\nbracketed expression (\"#[#2+5]\"). VariableEvaluatorSyntax\nsubstitutes a resolved literal back into the same field in the\nEvaluation bundle; then\nint.TryParses the final string to produce an int target.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.Keywords.FanucIfThen.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.Keywords.FanucIfThen.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.Keywords.FanucIfThen", + "Summary": "

    Fanuc Custom Macro B IF [<cond>] THEN <body>\nsingle-block conditional record. Stamped on the host block by\n after the gate\ndecision; produced earlier by\n as a parsing-stage\nsub-section (Parsing.FanucIfThen) carrying the raw captured fields\nplus an internal PendingAssignments sub-object harvested from the\nbody text.

    \n

    \nSpec: IF [bool-expr] THEN <stmt> executes <stmt>\nonly when the condition is truthy. Unlike 's\nconditional form there is no jump — the body affects the current block\nonly, no source splice, no label scan, no iteration watchdog. The most\ncommon body shape is a single Custom Macro B assignment\n(#nnn = <expr>); multiple assignments in one body are also\naccepted and lifted together.\n

    \n

    \n is held as a string at parsing time so\nVariableEvaluatorSyntax's pass-2 tree walk can substitute\nit to a numeric in place;\nthe FanucIfThenSyntax tail then reads the resolved node polymorphically\nvia the same ReadCondition shape used by\n.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.Keywords.FanucMacroCall.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.Keywords.FanucMacroCall.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.Keywords.FanucMacroCall", + "Summary": "

    One-shot custom-macro-call record written by\n. Lives on both the\nG65 host block (the caller) and every inlined block of the\nmacro body — so a cache-dump reader can land on any block inside the\nmacro and immediately see “this block belongs to a G65 call of\nFile with these argument bindings” without back-walking\nto find the host.

    \n

    \nEach inlined block additionally carries the resolved\nVars.Local #1-#26 bindings derived from \n(see ), so\n\nresolves macro args in a single-block lookup. Frame isolation is\nstructural: caller blocks never have Vars.Local written, so\nafter the macro body ends, the next caller block reads null\nfor any #1-#26 without any explicit frame marker.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.Keywords.FanucModalMacro.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.Keywords.FanucModalMacro.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.Keywords.FanucModalMacro", + "Summary": "

    Modal-macro-call record left by\n. Carries Fanuc\nG66 setup state forward block-to-block until cancelled by\nG67. The section is also written on the G67 block itself\n(with = “G67”) so cache dumps show the cancel\nedge; subsequent blocks then carry no section at all.

    \n

    \nPer-block expansion of the modal call into an actual macro inline at\nevery positioning move is not yet implemented — a\nFanucModalMacro--NotExpanded warning is emitted on the setup\nblock to flag the simulation gap. The setup state itself is captured\nfaithfully so external tooling can detect \"this block sits inside a\nG66 modal\" via the carried section.\n

    \n" + }, { "type": "ManagedReference", "source_relative_path": "api/Hi.NcParsers.Keywords.FanucPathSmoothing.yml", @@ -11348,7 +11670,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.Keywords.IMotionEventDef", - "Summary": "

    One-shot motion event — present only on blocks that actually issue a\nmotion command. Used by motion semantics (,\n, )\nas the trigger to emit motion . NOT carried\nforward across blocks. Property names are used as JSON keys via nameof.

    \n" + "Summary": "

    One-shot motion event — present on every block whose source programmed\na motion command, regardless of whether the resulting displacement is non-zero.\nA redundant G01 X10 on a block already at X10 still gets a\n; the motion semantics\n(,\n, )\nthen early-return on distance <= 0 and emit no\n. NOT carried forward across blocks.

    \n

    \nReason for the \"programmed, not displaced\" definition: Fanuc G66 modal\nmacro fires once per programmed motion command (per Fanuc spec —\nno distance gate), so .Expansion uses\n presence as its trigger. Suppressing the section\non zero-distance moves would silently change G66 behaviour. The modal\nsibling separately latches the Group-01 mode for\nreaders that only need to know \"what G-code is active\".\n

    \nProperty names are used as JSON keys via nameof.\n" }, { "type": "ManagedReference", @@ -11630,6 +11952,20 @@ "Title": "Hi.NcParsers.Keywords.MachineCoordinateState", "Summary": "

    Section key holder for .

    \n" }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.Keywords.MacroFrame.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.Keywords.MacroFrame.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.Keywords.MacroFrame", + "Summary": "

    Top-level integer marker stamped onto a SyntaxPiece's JSON\nto identify which call frame the block belongs to. Brand-agnostic by\ndesign — written by \ntoday, reusable by any future call-inlining syntax (Fanuc G66\nmodal expansion, Heidenhain LBL CALL, …) that needs\nlocal-variable isolation across call boundaries.

    \n

    \nSemantics: the value is an opaque id; only equality matters. Two\nblocks with the same id share a call frame\n(locals visible across them via single-step carry); two blocks with\ndifferent ids do not. The id 0 is reserved for the main\nprogram frame and is returned by when the field is\nabsent — so a plain caller block needs no stamp and yet compares\ndistinct from any inlined frame.\n

    \n

    \nStored as a top-level JSON int (not an object section) so it stays\nlightweight on every inlined block. Decoupled from\n: that section is a diagnostic record of\nthe call (what file, what args), while MacroFrame is the\npurely functional marker the local-variable I/O syntaxes consult.\n

    \n" + }, { "type": "ManagedReference", "source_relative_path": "api/Hi.NcParsers.Keywords.MotionEvent.yml", @@ -11824,7 +12160,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.Keywords.SubProgramCall", - "Summary": "

    Subprogram call record left on the M98 / M198 host block by\n after the subprogram\nfile has been inlined into the source layer. The call itself emits no\nmotion act; this section is bookkeeping so cache dumps and diagnostic\nreaders can see "this block triggered an inline of file File".

    \n" + "Summary": "

    Subprogram call record left by\n on the M98 /\nM198 host block and on every inlined body block. The call itself\nemits no motion act; this section is bookkeeping so cache dumps and\ndiagnostic readers can see "this block triggered (or sits inside)\nan inline of program P".

    \n

    \nM98 and M198 share the exact same section shape. The\ndifference between them is purely environmental — which folder the\nresolver looks in (SubProgramFolderConfig.InternalFolder vs\nExternalFolder) — and that lives on the dependency, not in\nthis JSON record.\n

    \n" }, { "type": "ManagedReference", @@ -11838,7 +12174,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.Keywords.SubProgramReturn", - "Summary": "

    Subprogram return record left on the M99 host block by\n. Return blocks\nproduce no motion acts; this section makes the consumed M99 visible\nin cache dumps and reserves a slot for future M99 P{seq}\n(return-to-sequence-number) support.

    \n" + "Summary": "

    Subprogram return record left on the M99 host block by\n. Return blocks\nproduce no motion acts; this section makes the consumed M99 visible\nin cache dumps and surfaces the M99 P{seq} jump decision.

    \n" }, { "type": "ManagedReference", @@ -11938,6 +12274,20 @@ "Title": "Hi.NcParsers.LogicSyntaxs.BackBoringSyntax", "Summary": "

    G87 back boring cycle. Supports modal repetition.\nCuts upward from Z to R — used to bore the back side of a workpiece.

    \n

    \nCycle sequence:\n

    1. Oriented spindle stop (OSS) at current position
    2. Rapid (shifted) to init position, then down to bottom Z\n — tool enters pre-drilled hole without contacting bore wall
    3. Shift back to hole center at bottom
    4. Spindle start (CW)
    5. Feed upward from Z to R-point (back boring cut)
    6. Oriented spindle stop at R
    7. Tool shift, rapid retract (shifted) to final Z
    8. Shift back to center, spindle restart
    \n\n

    \nQ specifies the lateral shift distance (mm).\nShift direction defaults to +X (OSS angle 0°).\n

    \n

    \nReads absolute coordinates from the cycle section, which is\nresolved by before this\nsyntax runs.\n

    \n" }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.LogicSyntaxs.BareG28Behavior", + "Summary": "

    Writes section for G28 reference point return.\nReads intermediate XYZ from Parsing.G28\n(written by )\nand converts to machine coordinates via\n.

    \n

    \nMust be placed after in the syntax chain.\nRemoves the section written by\n (G28 handles its own motion).\nOverwrites root \nand with reference position\nfor subsequent block lookback.\n

    \n" + }, { "type": "ManagedReference", "source_relative_path": "api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.yml", @@ -12244,7 +12594,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax", - "Summary": "

    Resolve modular rotary axes to the shortest cyclic path relative to the previous node.\nUses to determine which axes\nwithin need cyclic resolution.\nFalls back to hardcoded A/B/C if no is available.\nMust be placed after in .

    \n" + "Summary": "

    Resolve modular rotary axes to the shortest cyclic path relative to the previous node.\nUses to determine which axes\nwithin need cyclic resolution.\nFalls back to hardcoded A/B/C if no is available.\nMust be placed after in .

    \n

    \nTwo stages, mirroring :\n

    1. Root MachineCoordinateState — anchored at the previous\n block's modal rotary state.
    2. .[*]\n — sequential walk through items, anchoring item 0 at the previous\n block's modal state and item i > 0 at item i-1's\n post-cycle value (per-axis chain). Items without a rotary\n MachineCoordinateState are skipped.
    \nThe items pass enables rotary motion (e.g. G28 ABC intermediate /\nhome stages) to surface as motion \nsegments rather than a single root-MC stamp.\n\n" }, { "type": "ManagedReference", @@ -12356,7 +12706,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.LogicSyntaxs.ProgramEndCleanSyntax", - "Summary": "

    Clears the per-block Vars.Volatile dictionary on blocks that\ntriggered program end (M02 / M30, identified by the\n section written by ).

    \n

    \nReal Fanuc clears non-retained common variables (#100-#499) on program\nend + reset; this syntax models that behaviour at the simulator level.\nThe clear happens on the same block that carried M02/M30 — the next\nblock's carry then sees an\nempty dictionary on the predecessor and starts fresh.\n

    \n

    \nPipeline placement: must run after both \n(which writes the section this syntax checks)\nand (so the carry has\nalready happened on this block; this syntax overwrites the result).\n

    \n

    \nRetained common variables (#500-#999, owned by\n) are\nuntouched — they survive program end on real hardware (NV-RAM).\nLocal variables (#1-#33, scope: macro call frame) are also\nuntouched here; their lifecycle belongs to G65/G66/M99 push/pop, not\nprogram end.\n

    \n" + "Summary": "

    Clears the per-block Vars.Volatile dictionary on blocks that\ntriggered program end (M02 / M30, identified by the\n section written by ).

    \n

    \nReal Fanuc clears non-retained common variables (#100-#499) on program\nend + reset; this syntax models that behaviour at the simulator level.\nThe clear happens on the same block that carried M02/M30 — the next\nblock's carry then sees an\nempty dictionary on the predecessor and starts fresh.\n

    \n

    \nPipeline placement: must run after both \n(which writes the section this syntax checks)\nand (so the carry has\nalready happened on this block; this syntax overwrites the result).\n

    \n

    \nRetained common variables (#500-#999, owned by\n) are\nuntouched — they survive program end on real hardware (NV-RAM).\nLocal variables (#1-#33, scope: macro call frame) are also\nuntouched here; their lifecycle belongs to G65/G66/M99 push/pop, not\nprogram end.\n

    \n

    \nAlso clears any active on the same\nedge: a G66 modal that was still active when M02/M30 hit is\nimplicitly cancelled, matching real Fanuc reset behaviour. The\nsection is overwritten with a G67-shaped cancel marker so\nthe carry mechanism in\n sees the boundary\nand does not propagate the modal past the program-end edge.\n

    \n" }, { "type": "ManagedReference", @@ -12426,7 +12776,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax", - "Summary": "

    Writes section for G28 reference point return.\nReads intermediate XYZ from Parsing.G28\n(written by )\nand converts to machine coordinates via\n.

    \n

    \nMust be placed after in the syntax chain.\nRemoves the section written by\n (G28 handles its own motion).\nOverwrites root \nand with reference position\nfor subsequent block lookback.\n

    \n" + "Summary": null }, { "type": "ManagedReference", @@ -12696,17 +13046,59 @@ }, { "type": "ManagedReference", - "source_relative_path": "api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.yml", + "source_relative_path": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.yml", "output": { ".html": { - "relative_path": "api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html" + "relative_path": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html" } }, "version": "", "Uid": null, "IsMRef": true, - "Title": "Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax", - "Summary": "

    Detects a Fanuc-family program identifier header — O1234 or\n<O1234> — that follows a \nline, and records it under on the\nblock JSON. The wrapping form (bare vs angle-bracketed) is preserved\nin so the block can be emitted\nback to its original notation.

    \n" + "Title": "Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax", + "Summary": "

    Parses Fanuc Custom Macro B GOTO phrases out of the remaining\n into a Parsing.FanucGoto\nsub-object. Two forms are recognised:

    \n
    • GOTO <n> — unconditional jump.
    • IF [<bool-expr>] GOTO <n> — conditional jump.
    \n

    \nIF [...] GOTO is matched as a single phrase, not as an IF\nsyntax composed with a GOTO syntax — Fanuc only permits the two\nfixed forms (the other being IF [...] THEN <assignment>,\nout of scope here), so a phrase-level parser is more faithful and\navoids parsing-ambiguity rabbit holes.\n

    \n

    \n<n> is captured as a raw token (literal like \"100\",\nvariable like \"#1\", or bracketed expression like\n\"#[#2+5]\"). \nsubstitutes the resolved literal back into the same field downstream;\n then parses the final\nstring as an int. Storing as a string at parsing time mirrors how axis\ntags and canned-cycle params accept #N references and the\nevaluator rewrites them in place.\n

    \n

    \nPipeline placement: after (so the leading\nN{seq} on a block like N50 GOTO 100 has already been\nconsumed) and after \n(so a parenthesised (GOTO 100) inside a comment never matches).\nThe phrase consumes the entire remaining text on the block — Fanuc\nallows only the GOTO / IF-GOTO phrase after any preceding head index,\nno other instructions on the same block.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax", + "Summary": "

    Parses the Fanuc Custom Macro B\nIF [<bool-expr>] THEN <body> single-block conditional\nphrase out of into a\nParsing.FanucIfThen sub-object. Sibling to\n — Fanuc spec only permits two\nIF-led control phrases (IF [...] GOTO <n> handled there,\nIF [...] THEN <stmt> handled here) so each form is matched\nphrase-level rather than composed from a generic IF combinator.

    \n

    \nBody shape. The body after THEN is conceptually a single\nstatement that affects the current block only — no jump, no label scan.\nAlmost always a Custom Macro B assignment (#nnn = <expr>);\nmultiple assignments in the same body\n(#100 = 5. #101 = #100 + 1) are also accepted. The parsing\nsyntax pre-extracts these via\n into\nParsing.FanucIfThen.PendingAssignments as {tag: rhs-string}\nentries — that shape lets 's\npass-2 tree walk substitute each RHS to a numeric in place, and lets\n lift the\nresolved entries into Parsing.Assignments only when the gate\ncondition fires (so unfired bodies leave no trace in the readers).\n

    \n

    \nPipeline placement. This syntax must run before\n — the bare IF-GOTO regex over there\n(^IF[..]GOTO n$) is anchored, but consuming IF-THEN here first\nkeeps the two phrases textually disjoint and avoids any future\nregression if either regex is loosened. Also placed before\n so a bare\nIF [...] THEN #100 = 5. is not first half-eaten as a plain\nassignment.\n

    \n

    \nRaw is retained verbatim on the\nparsing section regardless of whether the body parsed as assignments —\nit carries the round-trip view and lets the evaluation syntax warn\n(FanucIfThen--UnsupportedBody) if no PendingAssignments were\nproduced on a truthy condition.\n

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax", + "Summary": "

    Detects a Fanuc-family program identifier header — O1234 or\n<O1234> — that follows a \nline, and records it under on the\nblock JSON. The wrapping form (bare vs angle-bracketed) is preserved\nin so the block can be emitted\nback to its original notation.

    \n" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.yml", + "output": { + ".html": { + "relative_path": "api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html" + } + }, + "version": "", + "Uid": null, + "IsMRef": true, + "Title": "Hi.NcParsers.ParsingSyntaxs.Fanuc", + "Summary": null }, { "type": "ManagedReference", @@ -12860,7 +13252,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax", - "Summary": "

    Heidenhain linear movement (the leading L) syntax.

    \n" + "Summary": "

    Heidenhain linear movement (the leading L) syntax. Strips the leading\nL and grabs axis-tag values for any of\n (X, Y, Z, U, V, W, A, B, C) that\nappear afterwards as {axis}{signed-value} pairs; values are\nparsed as floats via .

    \n" }, { "type": "ManagedReference", @@ -13070,7 +13462,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax", - "Summary": "

    Per-block modal-section carry. For each key in ,\nif the current block has no section for that key, deep-clone the same\nsection from the immediately previous block (which is itself guaranteed\nto carry it because every block is processed by this syntax) and set\n = \ninside the cloned section. Lets every block stand alone with its full\nmodal context, so downstream readers (cache-file dumps, semantics, UI\njumping to a single block) do not need\n to resolve modal state.

    \n

    \nThis replaces the earlier CacheSyntax design (which sampled\nevery Pace blocks). The legacy CacheSyntax XName is still\nrecognised on load for backward compatibility with previously-saved\nproject files.\n

    \n" + "Summary": "

    Per-block modal-section carry. For each key in ,\nif the current block has no section for that key, deep-clone the same\nsection from the immediately previous block (which is itself guaranteed\nto carry it because every block is processed by this syntax) and set\n = \ninside the cloned section. Lets every block stand alone with its full\nmodal context, so downstream readers (cache-file dumps, semantics, UI\njumping to a single block) do not need\n to resolve modal state.

    \n

    \nA JSON section is a candidate for when ALL\nfour criteria hold:\n

    1. Writers concentrated — one or two syntaxes own the\n section (e.g. /\n own\n MotionState; the call/return pair own\n SubProgramCall-derived state).
    2. Readers distributed — multiple downstream consumers\n each need the value, and none of them should walk back to find it.\n Single-reader sections do not benefit from blanket carry.
    3. Every block must see the section — cache-dump readers\n landing randomly, single-block UI views, and look-ahead syntaxes\n all require the section to be present on every block.
    4. Carry is unconditional — no frame-gating or other\n per-block veto. Sections that need conditional carry (e.g.\n 's\n frame-aware Vars.Local dict-merge — carry only when\n MacroFrame matches) belong in the owning syntax's own\n carry logic, not here.
    \nA section failing any criterion should be carried through its owning\nsyntax's own logic (single-step node.Previous read, or no carry\nat all if absence is meaningful — e.g. MacroFrame absent = main\nframe).\n\n

    \nThis replaces the earlier CacheSyntax design (which sampled\nevery Pace blocks). The legacy CacheSyntax XName is still\nrecognised on load for backward compatibility with previously-saved\nproject files.\n

    \n" }, { "type": "ManagedReference", @@ -13196,7 +13588,7 @@ "Uid": null, "IsMRef": true, "Title": "Hi.NcParsers.Semantics.CompoundMotionSemantic", - "Summary": "

    Resolves into acts\nby delegating to\n.

    \n" + "Summary": "

    Resolves into acts\nby delegating to\n.

    \n" }, { "type": "ManagedReference", diff --git a/App/wwwroot/HiAPI-docsite/release-note/index.html b/App/wwwroot/HiAPI-docsite/release-note/index.html index 4e99a212..b20c3128 100644 --- a/App/wwwroot/HiAPI-docsite/release-note/index.html +++ b/App/wwwroot/HiAPI-docsite/release-note/index.html @@ -87,6 +87,13 @@

    Release Note

    +

    HiNc Packages Version 3.1.171

    +
      +
    • Rename RuntimeApiSessionShell (the runtime entry point exposed to scripting); IShellCommandISessionCommand and RuntimeControllerSessionShellController; the Hi.ShellCommands namespace moves to Hi.SessionCommands, and every command implementer's Run() parameter renames scriptApisessionShell
    • +
    • Tri-state milling-physics contract: MachiningStep physics getters converge on a tri-state result, non-null MillingPhysicsBrief on no-cut steps under EnablePhysics; silently skip thermal physics on null FluteMaterial / WorkpieceMaterial; lazy first-equip warning; align relief-face null-sentinel across NoCut + producer (in NcOpt and forces)
    • +
    • Rename IMachiningStepHostIMachiningService (drops the ICsScriptApi seam)
    • +
    • Fixes: rotary IK round-trip anchored to pre-FK interpolated angle; ForceAccelShot.ReadRows skips blank lines
    • +

    HiNc Packages Version 3.1.167

    • Introduce SoftNcRunner as a pluggable NC parser/runner replacing the legacy HardNcRunner; opt in via EnableSoftNcRunner. see HardNc → SoftNc Rewrite — Progress Report for the in-flight rewrite scope and remaining work
    • diff --git a/App/wwwroot/HiAPI-docsite/sample/Sample.MachineTool.DemoBuildMachineTool.html b/App/wwwroot/HiAPI-docsite/sample/Sample.MachineTool.DemoBuildMachineTool.html index b2afe1b1..d56fb06d 100644 --- a/App/wwwroot/HiAPI-docsite/sample/Sample.MachineTool.DemoBuildMachineTool.html +++ b/App/wwwroot/HiAPI-docsite/sample/Sample.MachineTool.DemoBuildMachineTool.html @@ -182,7 +182,7 @@ namespace Sample.MachineTool { static DemoBuildMachineTool() { - XFactory.Regs.Add(XName, (xml, baseDirectory, relFile, progress, res) => new DemoBuildMachineTool()); + XFactory.Generators.Add(XName, (xml, baseDirectory, relFile, progress, res) => new DemoBuildMachineTool()); } /// <summary> /// Generates an XYZ-ABC machine tool instance from embedded resources. diff --git a/App/wwwroot/HiAPI-docsite/xrefmap.yml b/App/wwwroot/HiAPI-docsite/xrefmap.yml index b5769bdf..1e0000a6 100644 --- a/App/wwwroot/HiAPI-docsite/xrefmap.yml +++ b/App/wwwroot/HiAPI-docsite/xrefmap.yml @@ -6226,6 +6226,24 @@ references: fullName.vb: Hi.Common.Collections.LazyLinkedList(Of T).PrependSource nameWithType: LazyLinkedList.PrependSource nameWithType.vb: LazyLinkedList(Of T).PrependSource +- uid: Hi.Common.Collections.LazyLinkedList`1.ReplaceSource(System.Collections.Generic.IEnumerable{`0}) + name: ReplaceSource(IEnumerable) + href: api/Hi.Common.Collections.LazyLinkedList-1.html#Hi_Common_Collections_LazyLinkedList_1_ReplaceSource_System_Collections_Generic_IEnumerable__0__ + commentId: M:Hi.Common.Collections.LazyLinkedList`1.ReplaceSource(System.Collections.Generic.IEnumerable{`0}) + name.vb: ReplaceSource(IEnumerable(Of T)) + fullName: Hi.Common.Collections.LazyLinkedList.ReplaceSource(System.Collections.Generic.IEnumerable) + fullName.vb: Hi.Common.Collections.LazyLinkedList(Of T).ReplaceSource(System.Collections.Generic.IEnumerable(Of T)) + nameWithType: LazyLinkedList.ReplaceSource(IEnumerable) + nameWithType.vb: LazyLinkedList(Of T).ReplaceSource(IEnumerable(Of T)) +- uid: Hi.Common.Collections.LazyLinkedList`1.ReplaceSource* + name: ReplaceSource + href: api/Hi.Common.Collections.LazyLinkedList-1.html#Hi_Common_Collections_LazyLinkedList_1_ReplaceSource_ + commentId: Overload:Hi.Common.Collections.LazyLinkedList`1.ReplaceSource + isSpec: "True" + fullName: Hi.Common.Collections.LazyLinkedList.ReplaceSource + fullName.vb: Hi.Common.Collections.LazyLinkedList(Of T).ReplaceSource + nameWithType: LazyLinkedList.ReplaceSource + nameWithType.vb: LazyLinkedList(Of T).ReplaceSource - uid: Hi.Common.Collections.LinkedListUtil name: LinkedListUtil href: api/Hi.Common.Collections.LinkedListUtil.html @@ -15958,12 +15976,6 @@ references: fullName.vb: Hi.Common.XmlUtils.XFactory.GenByFile(Of T)(String, String, System.IProgress(Of Object), Boolean, Object()) nameWithType: XFactory.GenByFile(string, string, IProgress, bool, object[]) nameWithType.vb: XFactory.GenByFile(Of T)(String, String, IProgress(Of Object), Boolean, Object()) -- uid: Hi.Common.XmlUtils.XFactory.GenByXElementDelegate - name: XFactory.GenByXElementDelegate - href: api/Hi.Common.XmlUtils.XFactory.GenByXElementDelegate.html - commentId: T:Hi.Common.XmlUtils.XFactory.GenByXElementDelegate - fullName: Hi.Common.XmlUtils.XFactory.GenByXElementDelegate - nameWithType: XFactory.GenByXElementDelegate - uid: Hi.Common.XmlUtils.XFactory.GenFileRefSource* name: GenFileRefSource href: api/Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_GenFileRefSource_ @@ -16030,19 +16042,25 @@ references: fullName.vb: Hi.Common.XmlUtils.XFactory.Gen(Of T)(System.Xml.Linq.XElement, String, String, System.IProgress(Of Object), Boolean, Object()) nameWithType: XFactory.Gen(XElement, string, out string, IProgress, bool, object[]) nameWithType.vb: XFactory.Gen(Of T)(XElement, String, String, IProgress(Of Object), Boolean, Object()) -- uid: Hi.Common.XmlUtils.XFactory.Regs - name: Regs - href: api/Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Regs - commentId: P:Hi.Common.XmlUtils.XFactory.Regs - fullName: Hi.Common.XmlUtils.XFactory.Regs - nameWithType: XFactory.Regs -- uid: Hi.Common.XmlUtils.XFactory.Regs* - name: Regs - href: api/Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Regs_ - commentId: Overload:Hi.Common.XmlUtils.XFactory.Regs +- uid: Hi.Common.XmlUtils.XFactory.Generators + name: Generators + href: api/Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Generators + commentId: P:Hi.Common.XmlUtils.XFactory.Generators + fullName: Hi.Common.XmlUtils.XFactory.Generators + nameWithType: XFactory.Generators +- uid: Hi.Common.XmlUtils.XFactory.Generators* + name: Generators + href: api/Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Generators_ + commentId: Overload:Hi.Common.XmlUtils.XFactory.Generators isSpec: "True" - fullName: Hi.Common.XmlUtils.XFactory.Regs - nameWithType: XFactory.Regs + fullName: Hi.Common.XmlUtils.XFactory.Generators + nameWithType: XFactory.Generators +- uid: Hi.Common.XmlUtils.XFactory.XGeneratorDelegate + name: XFactory.XGeneratorDelegate + href: api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html + commentId: T:Hi.Common.XmlUtils.XFactory.XGeneratorDelegate + fullName: Hi.Common.XmlUtils.XFactory.XGeneratorDelegate + nameWithType: XFactory.XGeneratorDelegate - uid: Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate name: XFactory.XmlExceptionDelegate href: api/Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html @@ -85548,6 +85566,25 @@ references: commentId: T:Hi.MachiningProcs.SessionProgress fullName: Hi.MachiningProcs.SessionProgress nameWithType: SessionProgress +- uid: Hi.MachiningProcs.SessionProgress.#ctor + name: SessionProgress() + href: api/Hi.MachiningProcs.SessionProgress.html#Hi_MachiningProcs_SessionProgress__ctor + commentId: M:Hi.MachiningProcs.SessionProgress.#ctor + name.vb: New() + fullName: Hi.MachiningProcs.SessionProgress.SessionProgress() + fullName.vb: Hi.MachiningProcs.SessionProgress.New() + nameWithType: SessionProgress.SessionProgress() + nameWithType.vb: SessionProgress.New() +- uid: Hi.MachiningProcs.SessionProgress.#ctor* + name: SessionProgress + href: api/Hi.MachiningProcs.SessionProgress.html#Hi_MachiningProcs_SessionProgress__ctor_ + commentId: Overload:Hi.MachiningProcs.SessionProgress.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.MachiningProcs.SessionProgress.SessionProgress + fullName.vb: Hi.MachiningProcs.SessionProgress.New + nameWithType: SessionProgress.SessionProgress + nameWithType.vb: SessionProgress.New - uid: Hi.MachiningProcs.SessionProgress.Add(System.Object) name: Add(object) href: api/Hi.MachiningProcs.SessionProgress.html#Hi_MachiningProcs_SessionProgress_Add_System_Object_ @@ -120803,6 +120840,114 @@ references: commentId: F:Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.TypeC fullName: Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.TypeC nameWithType: CutterCompensationType.TypeC +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency + name: FanucGotoIterationDependency + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html + commentId: T:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency + nameWithType: FanucGotoIterationDependency +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.#ctor + name: FanucGotoIterationDependency() + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency__ctor + commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.#ctor + name.vb: New() + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.FanucGotoIterationDependency() + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.New() + nameWithType: FanucGotoIterationDependency.FanucGotoIterationDependency() + nameWithType.vb: FanucGotoIterationDependency.New() +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.#ctor(System.Xml.Linq.XElement) + name: FanucGotoIterationDependency(XElement) + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.FanucGotoIterationDependency(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.New(System.Xml.Linq.XElement) + nameWithType: FanucGotoIterationDependency.FanucGotoIterationDependency(XElement) + nameWithType.vb: FanucGotoIterationDependency.New(XElement) +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.#ctor* + name: FanucGotoIterationDependency + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency__ctor_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.FanucGotoIterationDependency + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.New + nameWithType: FanucGotoIterationDependency.FanucGotoIterationDependency + nameWithType.vb: FanucGotoIterationDependency.New +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.CountByTarget + name: CountByTarget + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_CountByTarget + commentId: P:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.CountByTarget + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.CountByTarget + nameWithType: FanucGotoIterationDependency.CountByTarget +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.CountByTarget* + name: CountByTarget + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_CountByTarget_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.CountByTarget + isSpec: "True" + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.CountByTarget + nameWithType: FanucGotoIterationDependency.CountByTarget +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.DefaultMaxIterationsPerTarget + name: DefaultMaxIterationsPerTarget + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_DefaultMaxIterationsPerTarget + commentId: F:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.DefaultMaxIterationsPerTarget + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.DefaultMaxIterationsPerTarget + nameWithType: FanucGotoIterationDependency.DefaultMaxIterationsPerTarget +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MakeXmlSource(String, String, Boolean) + nameWithType: FanucGotoIterationDependency.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucGotoIterationDependency.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MakeXmlSource + nameWithType: FanucGotoIterationDependency.MakeXmlSource +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MaxIterationsPerTarget + name: MaxIterationsPerTarget + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_MaxIterationsPerTarget + commentId: P:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MaxIterationsPerTarget + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MaxIterationsPerTarget + nameWithType: FanucGotoIterationDependency.MaxIterationsPerTarget +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MaxIterationsPerTarget* + name: MaxIterationsPerTarget + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_MaxIterationsPerTarget_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MaxIterationsPerTarget + isSpec: "True" + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.MaxIterationsPerTarget + nameWithType: FanucGotoIterationDependency.MaxIterationsPerTarget +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.Reset + name: Reset() + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_Reset + commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.Reset + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.Reset() + nameWithType: FanucGotoIterationDependency.Reset() +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.Reset* + name: Reset + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_Reset_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.Reset + isSpec: "True" + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.Reset + nameWithType: FanucGotoIterationDependency.Reset +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.XName + name: XName + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_XName + commentId: P:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.XName + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.XName + nameWithType: FanucGotoIterationDependency.XName +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.XName* + name: XName + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html#Hi_NcParsers_Dependencys_Fanuc_FanucGotoIterationDependency_XName_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.XName + isSpec: "True" + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.XName + nameWithType: FanucGotoIterationDependency.XName - uid: Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable name: FanucParameterTable href: api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html @@ -121244,6 +121389,34 @@ references: commentId: T:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup nameWithType: FanucPositionVariableLookup +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.#ctor + name: FanucPositionVariableLookup() + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucPositionVariableLookup__ctor + commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.#ctor + name.vb: New() + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.FanucPositionVariableLookup() + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.New() + nameWithType: FanucPositionVariableLookup.FanucPositionVariableLookup() + nameWithType.vb: FanucPositionVariableLookup.New() +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.#ctor(System.Xml.Linq.XElement) + name: FanucPositionVariableLookup(XElement) + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucPositionVariableLookup__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.FanucPositionVariableLookup(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.New(System.Xml.Linq.XElement) + nameWithType: FanucPositionVariableLookup.FanucPositionVariableLookup(XElement) + nameWithType.vb: FanucPositionVariableLookup.New(XElement) +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.#ctor* + name: FanucPositionVariableLookup + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucPositionVariableLookup__ctor_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.FanucPositionVariableLookup + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.New + nameWithType: FanucPositionVariableLookup.FanucPositionVariableLookup + nameWithType.vb: FanucPositionVariableLookup.New - uid: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.AbsoluteXyzBase name: AbsoluteXyzBase href: api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucPositionVariableLookup_AbsoluteXyzBase @@ -121278,6 +121451,35 @@ references: commentId: F:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MachineCoordXyzBase fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MachineCoordXyzBase nameWithType: FanucPositionVariableLookup.MachineCoordXyzBase +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucPositionVariableLookup_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MakeXmlSource(String, String, Boolean) + nameWithType: FanucPositionVariableLookup.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucPositionVariableLookup.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucPositionVariableLookup_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.MakeXmlSource + nameWithType: FanucPositionVariableLookup.MakeXmlSource +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.XName + name: XName + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucPositionVariableLookup_XName + commentId: P:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.XName + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.XName + nameWithType: FanucPositionVariableLookup.XName +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.XName* + name: XName + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucPositionVariableLookup_XName_ + commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.XName + isSpec: "True" + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.XName + nameWithType: FanucPositionVariableLookup.XName - uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup name: FanucToolOffsetVariableLookup href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html @@ -121293,15 +121495,6 @@ references: fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.New() nameWithType: FanucToolOffsetVariableLookup.FanucToolOffsetVariableLookup() nameWithType.vb: FanucToolOffsetVariableLookup.New() -- uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.#ctor(Hi.NcParsers.Dependencys.Generic.ToolOffsetTable) - name: FanucToolOffsetVariableLookup(ToolOffsetTable) - href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucToolOffsetVariableLookup__ctor_Hi_NcParsers_Dependencys_Generic_ToolOffsetTable_ - commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.#ctor(Hi.NcParsers.Dependencys.Generic.ToolOffsetTable) - name.vb: New(ToolOffsetTable) - fullName: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.FanucToolOffsetVariableLookup(Hi.NcParsers.Dependencys.Generic.ToolOffsetTable) - fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.New(Hi.NcParsers.Dependencys.Generic.ToolOffsetTable) - nameWithType: FanucToolOffsetVariableLookup.FanucToolOffsetVariableLookup(ToolOffsetTable) - nameWithType.vb: FanucToolOffsetVariableLookup.New(ToolOffsetTable) - uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.#ctor(System.Xml.Linq.XElement) name: FanucToolOffsetVariableLookup(XElement) href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucToolOffsetVariableLookup__ctor_System_Xml_Linq_XElement_ @@ -121321,15 +121514,15 @@ references: fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.New nameWithType: FanucToolOffsetVariableLookup.FanucToolOffsetVariableLookup nameWithType.vb: FanucToolOffsetVariableLookup.New -- uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get(System.String) - name: Get(string) - href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucToolOffsetVariableLookup_Get_System_String_ - commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get(System.String) - name.vb: Get(String) - fullName: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get(string) - fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get(String) - nameWithType: FanucToolOffsetVariableLookup.Get(string) - nameWithType.vb: FanucToolOffsetVariableLookup.Get(String) +- uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get(System.String,Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.IReadOnlyList{Hi.NcParsers.Dependencys.INcDependency}) + name: Get(string, LazyLinkedListNode, IReadOnlyList) + href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucToolOffsetVariableLookup_Get_System_String_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_IReadOnlyList_Hi_NcParsers_Dependencys_INcDependency__ + commentId: M:Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get(System.String,Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.IReadOnlyList{Hi.NcParsers.Dependencys.INcDependency}) + name.vb: Get(String, LazyLinkedListNode(Of SyntaxPiece), IReadOnlyList(Of INcDependency)) + fullName: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get(string, Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.IReadOnlyList) + fullName.vb: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get(String, Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.IReadOnlyList(Of Hi.NcParsers.Dependencys.INcDependency)) + nameWithType: FanucToolOffsetVariableLookup.Get(string, LazyLinkedListNode, IReadOnlyList) + nameWithType.vb: FanucToolOffsetVariableLookup.Get(String, LazyLinkedListNode(Of SyntaxPiece), IReadOnlyList(Of INcDependency)) - uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Get* name: Get href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucToolOffsetVariableLookup_Get_ @@ -121353,19 +121546,6 @@ references: isSpec: "True" fullName: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.MakeXmlSource nameWithType: FanucToolOffsetVariableLookup.MakeXmlSource -- uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Table - name: Table - href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucToolOffsetVariableLookup_Table - commentId: P:Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Table - fullName: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Table - nameWithType: FanucToolOffsetVariableLookup.Table -- uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Table* - name: Table - href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucToolOffsetVariableLookup_Table_ - commentId: Overload:Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Table - isSpec: "True" - fullName: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.Table - nameWithType: FanucToolOffsetVariableLookup.Table - uid: Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.ToolHeightMax name: ToolHeightMax href: api/Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html#Hi_NcParsers_Dependencys_Fanuc_FanucToolOffsetVariableLookup_ToolHeightMax @@ -124793,6 +124973,54 @@ references: commentId: N:Hi.NcParsers.EvaluationSyntaxs fullName: Hi.NcParsers.EvaluationSyntaxs nameWithType: Hi.NcParsers.EvaluationSyntaxs +- uid: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil + name: CallStackUtil + href: api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.CallStackUtil + fullName: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil + nameWithType: CallStackUtil +- uid: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPoppedCallStack(System.Text.Json.Nodes.JsonObject) + name: BuildPoppedCallStack(JsonObject) + href: api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html#Hi_NcParsers_EvaluationSyntaxs_CallStackUtil_BuildPoppedCallStack_System_Text_Json_Nodes_JsonObject_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPoppedCallStack(System.Text.Json.Nodes.JsonObject) + fullName: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPoppedCallStack(System.Text.Json.Nodes.JsonObject) + nameWithType: CallStackUtil.BuildPoppedCallStack(JsonObject) +- uid: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPoppedCallStack* + name: BuildPoppedCallStack + href: api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html#Hi_NcParsers_EvaluationSyntaxs_CallStackUtil_BuildPoppedCallStack_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPoppedCallStack + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPoppedCallStack + nameWithType: CallStackUtil.BuildPoppedCallStack +- uid: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPushedCallStack(System.Text.Json.Nodes.JsonObject,System.String) + name: BuildPushedCallStack(JsonObject, string) + href: api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html#Hi_NcParsers_EvaluationSyntaxs_CallStackUtil_BuildPushedCallStack_System_Text_Json_Nodes_JsonObject_System_String_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPushedCallStack(System.Text.Json.Nodes.JsonObject,System.String) + name.vb: BuildPushedCallStack(JsonObject, String) + fullName: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPushedCallStack(System.Text.Json.Nodes.JsonObject, string) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPushedCallStack(System.Text.Json.Nodes.JsonObject, String) + nameWithType: CallStackUtil.BuildPushedCallStack(JsonObject, string) + nameWithType.vb: CallStackUtil.BuildPushedCallStack(JsonObject, String) +- uid: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPushedCallStack* + name: BuildPushedCallStack + href: api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html#Hi_NcParsers_EvaluationSyntaxs_CallStackUtil_BuildPushedCallStack_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPushedCallStack + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.BuildPushedCallStack + nameWithType: CallStackUtil.BuildPushedCallStack +- uid: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.GetTopCallerFilePath(System.Text.Json.Nodes.JsonObject) + name: GetTopCallerFilePath(JsonObject) + href: api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html#Hi_NcParsers_EvaluationSyntaxs_CallStackUtil_GetTopCallerFilePath_System_Text_Json_Nodes_JsonObject_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.GetTopCallerFilePath(System.Text.Json.Nodes.JsonObject) + fullName: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.GetTopCallerFilePath(System.Text.Json.Nodes.JsonObject) + nameWithType: CallStackUtil.GetTopCallerFilePath(JsonObject) +- uid: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.GetTopCallerFilePath* + name: GetTopCallerFilePath + href: api/Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.html#Hi_NcParsers_EvaluationSyntaxs_CallStackUtil_GetTopCallerFilePath_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.GetTopCallerFilePath + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.CallStackUtil.GetTopCallerFilePath + nameWithType: CallStackUtil.GetTopCallerFilePath - uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation name: Hi.NcParsers.EvaluationSyntaxs.Evaluation href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html @@ -124958,6 +125186,34 @@ references: commentId: T:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup nameWithType: LocalVariableLookup +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor + name: LocalVariableLookup() + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup__ctor + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor + name.vb: New() + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.LocalVariableLookup() + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.New() + nameWithType: LocalVariableLookup.LocalVariableLookup() + nameWithType.vb: LocalVariableLookup.New() +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor(System.Xml.Linq.XElement) + name: LocalVariableLookup(XElement) + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.LocalVariableLookup(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.New(System.Xml.Linq.XElement) + nameWithType: LocalVariableLookup.LocalVariableLookup(XElement) + nameWithType.vb: LocalVariableLookup.New(XElement) +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor* + name: LocalVariableLookup + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.LocalVariableLookup + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.New + nameWithType: LocalVariableLookup.LocalVariableLookup + nameWithType.vb: LocalVariableLookup.New - uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.Get(System.String,Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.IReadOnlyList{Hi.NcParsers.Dependencys.INcDependency}) name: Get(string, LazyLinkedListNode, IReadOnlyList) href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_Get_System_String_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_IReadOnlyList_Hi_NcParsers_Dependencys_INcDependency__ @@ -124986,6 +125242,35 @@ references: commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.LocalMin fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.LocalMin nameWithType: LocalVariableLookup.LocalMin +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource(String, String, Boolean) + nameWithType: LocalVariableLookup.MakeXmlSource(string, string, bool) + nameWithType.vb: LocalVariableLookup.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.MakeXmlSource + nameWithType: LocalVariableLookup.MakeXmlSource +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.XName + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_XName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.XName + nameWithType: LocalVariableLookup.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.XName* + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_LocalVariableLookup_XName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.XName + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.LocalVariableLookup.XName + nameWithType: LocalVariableLookup.XName - uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr name: NcBinaryExpr href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryExpr.html @@ -125062,12 +125347,48 @@ references: commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Add fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Add nameWithType: NcBinaryOp.Add +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.And + name: And + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_And + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.And + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.And + nameWithType: NcBinaryOp.And - uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Divide name: Divide href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Divide commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Divide fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Divide nameWithType: NcBinaryOp.Divide +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Eq + name: Eq + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Eq + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Eq + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Eq + nameWithType: NcBinaryOp.Eq +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Ge + name: Ge + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Ge + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Ge + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Ge + nameWithType: NcBinaryOp.Ge +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Gt + name: Gt + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Gt + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Gt + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Gt + nameWithType: NcBinaryOp.Gt +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Le + name: Le + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Le + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Le + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Le + nameWithType: NcBinaryOp.Le +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Lt + name: Lt + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Lt + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Lt + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Lt + nameWithType: NcBinaryOp.Lt - uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Mod name: Mod href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Mod @@ -125080,12 +125401,30 @@ references: commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Multiply fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Multiply nameWithType: NcBinaryOp.Multiply +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Ne + name: Ne + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Ne + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Ne + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Ne + nameWithType: NcBinaryOp.Ne +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Or + name: Or + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Or + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Or + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Or + nameWithType: NcBinaryOp.Or - uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Subtract name: Subtract href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Subtract commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Subtract fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Subtract nameWithType: NcBinaryOp.Subtract +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Xor + name: Xor + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_NcBinaryOp_Xor + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Xor + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcBinaryOp.Xor + nameWithType: NcBinaryOp.Xor - uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr name: NcExpr href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpr.html @@ -125410,6 +125749,34 @@ references: commentId: T:Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup nameWithType: VolatileVariableLookup +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.#ctor + name: VolatileVariableLookup() + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_VolatileVariableLookup__ctor + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.#ctor + name.vb: New() + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.VolatileVariableLookup() + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.New() + nameWithType: VolatileVariableLookup.VolatileVariableLookup() + nameWithType.vb: VolatileVariableLookup.New() +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.#ctor(System.Xml.Linq.XElement) + name: VolatileVariableLookup(XElement) + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_VolatileVariableLookup__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.VolatileVariableLookup(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.New(System.Xml.Linq.XElement) + nameWithType: VolatileVariableLookup.VolatileVariableLookup(XElement) + nameWithType.vb: VolatileVariableLookup.New(XElement) +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.#ctor* + name: VolatileVariableLookup + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_VolatileVariableLookup__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.VolatileVariableLookup + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.New + nameWithType: VolatileVariableLookup.VolatileVariableLookup + nameWithType.vb: VolatileVariableLookup.New - uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.Get(System.String,Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.IReadOnlyList{Hi.NcParsers.Dependencys.INcDependency}) name: Get(string, LazyLinkedListNode, IReadOnlyList) href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_VolatileVariableLookup_Get_System_String_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_IReadOnlyList_Hi_NcParsers_Dependencys_INcDependency__ @@ -125426,116 +125793,886 @@ references: isSpec: "True" fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.Get nameWithType: VolatileVariableLookup.Get -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax - name: FanucSystemControlVariableSyntax - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html - commentId: T:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax - nameWithType: FanucSystemControlVariableSyntax -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.#ctor - name: FanucSystemControlVariableSyntax() - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax__ctor - commentId: M:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.#ctor +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_VolatileVariableLookup_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.MakeXmlSource(String, String, Boolean) + nameWithType: VolatileVariableLookup.MakeXmlSource(string, string, bool) + nameWithType.vb: VolatileVariableLookup.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_VolatileVariableLookup_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.MakeXmlSource + nameWithType: VolatileVariableLookup.MakeXmlSource +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.XName + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_VolatileVariableLookup_XName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.XName + nameWithType: VolatileVariableLookup.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.XName* + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.html#Hi_NcParsers_EvaluationSyntaxs_Evaluation_VolatileVariableLookup_XName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.XName + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Evaluation.VolatileVariableLookup.XName + nameWithType: VolatileVariableLookup.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc + name: Hi.NcParsers.EvaluationSyntaxs.Fanuc + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html + commentId: N:Hi.NcParsers.EvaluationSyntaxs.Fanuc + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc + nameWithType: Hi.NcParsers.EvaluationSyntaxs.Fanuc +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax + name: FanucGotoSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax + nameWithType: FanucGotoSyntax +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.#ctor + name: FanucGotoSyntax() + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax__ctor + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.#ctor name.vb: New() - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax() - fullName.vb: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.New() - nameWithType: FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax() - nameWithType.vb: FanucSystemControlVariableSyntax.New() -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.#ctor(System.Xml.Linq.XElement) - name: FanucSystemControlVariableSyntax(XElement) - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax__ctor_System_Xml_Linq_XElement_ - commentId: M:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.#ctor(System.Xml.Linq.XElement) - name.vb: New(XElement) - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax(System.Xml.Linq.XElement) - fullName.vb: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.New(System.Xml.Linq.XElement) - nameWithType: FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax(XElement) - nameWithType.vb: FanucSystemControlVariableSyntax.New(XElement) -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.#ctor* - name: FanucSystemControlVariableSyntax - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax__ctor_ - commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.#ctor + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.FanucGotoSyntax() + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.New() + nameWithType: FanucGotoSyntax.FanucGotoSyntax() + nameWithType.vb: FanucGotoSyntax.New() +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object}) + name: FanucGotoSyntax(XElement, string, IProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object}) + name.vb: New(XElement, String, IProgress(Of Object)) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.FanucGotoSyntax(System.Xml.Linq.XElement, string, System.IProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.New(System.Xml.Linq.XElement, String, System.IProgress(Of Object)) + nameWithType: FanucGotoSyntax.FanucGotoSyntax(XElement, string, IProgress) + nameWithType.vb: FanucGotoSyntax.New(XElement, String, IProgress(Of Object)) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.#ctor* + name: FanucGotoSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.#ctor isSpec: "True" name.vb: New - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax - fullName.vb: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.New + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.FanucGotoSyntax + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.New + nameWithType: FanucGotoSyntax.FanucGotoSyntax + nameWithType.vb: FanucGotoSyntax.New +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + nameWithType: FanucGotoSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) + nameWithType.vb: FanucGotoSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Build* + name: Build + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_Build_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Build + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Build + nameWithType: FanucGotoSyntax.Build +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.LabelProbeSyntaxes + name: LabelProbeSyntaxes + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_LabelProbeSyntaxes + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.LabelProbeSyntaxes + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.LabelProbeSyntaxes + nameWithType: FanucGotoSyntax.LabelProbeSyntaxes +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.LabelProbeSyntaxes* + name: LabelProbeSyntaxes + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_LabelProbeSyntaxes_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.LabelProbeSyntaxes + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.LabelProbeSyntaxes + nameWithType: FanucGotoSyntax.LabelProbeSyntaxes +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.MakeXmlSource(String, String, Boolean) + nameWithType: FanucGotoSyntax.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucGotoSyntax.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.MakeXmlSource + nameWithType: FanucGotoSyntax.MakeXmlSource +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Name + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_Name + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Name + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Name + nameWithType: FanucGotoSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Name* + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_Name_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Name + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.Name + nameWithType: FanucGotoSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.XName + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_XName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.XName + nameWithType: FanucGotoSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.XName* + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucGotoSyntax_XName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.XName + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.XName + nameWithType: FanucGotoSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax + name: FanucIfThenSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax + nameWithType: FanucIfThenSyntax +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.#ctor + name: FanucIfThenSyntax() + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax__ctor + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.#ctor + name.vb: New() + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.FanucIfThenSyntax() + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.New() + nameWithType: FanucIfThenSyntax.FanucIfThenSyntax() + nameWithType.vb: FanucIfThenSyntax.New() +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.#ctor(System.Xml.Linq.XElement) + name: FanucIfThenSyntax(XElement) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.FanucIfThenSyntax(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.New(System.Xml.Linq.XElement) + nameWithType: FanucIfThenSyntax.FanucIfThenSyntax(XElement) + nameWithType.vb: FanucIfThenSyntax.New(XElement) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.#ctor* + name: FanucIfThenSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.FanucIfThenSyntax + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.New + nameWithType: FanucIfThenSyntax.FanucIfThenSyntax + nameWithType.vb: FanucIfThenSyntax.New +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + nameWithType: FanucIfThenSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) + nameWithType.vb: FanucIfThenSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Build* + name: Build + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax_Build_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Build + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Build + nameWithType: FanucIfThenSyntax.Build +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.MakeXmlSource(String, String, Boolean) + nameWithType: FanucIfThenSyntax.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucIfThenSyntax.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.MakeXmlSource + nameWithType: FanucIfThenSyntax.MakeXmlSource +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Name + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax_Name + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Name + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Name + nameWithType: FanucIfThenSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Name* + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax_Name_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Name + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.Name + nameWithType: FanucIfThenSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.XName + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax_XName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.XName + nameWithType: FanucIfThenSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.XName* + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucIfThenSyntax_XName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.XName + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.XName + nameWithType: FanucIfThenSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax + name: FanucLocalVariableReadingSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax + nameWithType: FanucLocalVariableReadingSyntax +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.#ctor + name: FanucLocalVariableReadingSyntax() + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax__ctor + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.#ctor + name.vb: New() + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.FanucLocalVariableReadingSyntax() + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.New() + nameWithType: FanucLocalVariableReadingSyntax.FanucLocalVariableReadingSyntax() + nameWithType.vb: FanucLocalVariableReadingSyntax.New() +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.#ctor(System.Xml.Linq.XElement) + name: FanucLocalVariableReadingSyntax(XElement) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.FanucLocalVariableReadingSyntax(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.New(System.Xml.Linq.XElement) + nameWithType: FanucLocalVariableReadingSyntax.FanucLocalVariableReadingSyntax(XElement) + nameWithType.vb: FanucLocalVariableReadingSyntax.New(XElement) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.#ctor* + name: FanucLocalVariableReadingSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.FanucLocalVariableReadingSyntax + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.New + nameWithType: FanucLocalVariableReadingSyntax.FanucLocalVariableReadingSyntax + nameWithType.vb: FanucLocalVariableReadingSyntax.New +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + nameWithType: FanucLocalVariableReadingSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) + nameWithType.vb: FanucLocalVariableReadingSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Build* + name: Build + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_Build_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Build + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Build + nameWithType: FanucLocalVariableReadingSyntax.Build +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.LocalMax + name: LocalMax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_LocalMax + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.LocalMax + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.LocalMax + nameWithType: FanucLocalVariableReadingSyntax.LocalMax +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.LocalMin + name: LocalMin + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_LocalMin + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.LocalMin + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.LocalMin + nameWithType: FanucLocalVariableReadingSyntax.LocalMin +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.MakeXmlSource(String, String, Boolean) + nameWithType: FanucLocalVariableReadingSyntax.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucLocalVariableReadingSyntax.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.MakeXmlSource + nameWithType: FanucLocalVariableReadingSyntax.MakeXmlSource +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Name + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_Name + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Name + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Name + nameWithType: FanucLocalVariableReadingSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Name* + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_Name_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Name + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.Name + nameWithType: FanucLocalVariableReadingSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.XName + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_XName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.XName + nameWithType: FanucLocalVariableReadingSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.XName* + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucLocalVariableReadingSyntax_XName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.XName + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucLocalVariableReadingSyntax.XName + nameWithType: FanucLocalVariableReadingSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap + name: FanucMacroArgumentMap + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap + nameWithType: FanucMacroArgumentMap +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.Map + name: Map + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroArgumentMap_Map + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.Map + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroArgumentMap.Map + nameWithType: FanucMacroArgumentMap.Map +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax + name: FanucMacroCallSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax + nameWithType: FanucMacroCallSyntax +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.#ctor + name: FanucMacroCallSyntax() + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax__ctor + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.#ctor + name.vb: New() + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.FanucMacroCallSyntax() + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.New() + nameWithType: FanucMacroCallSyntax.FanucMacroCallSyntax() + nameWithType.vb: FanucMacroCallSyntax.New() +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.#ctor(System.Xml.Linq.XElement) + name: FanucMacroCallSyntax(XElement) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.FanucMacroCallSyntax(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.New(System.Xml.Linq.XElement) + nameWithType: FanucMacroCallSyntax.FanucMacroCallSyntax(XElement) + nameWithType.vb: FanucMacroCallSyntax.New(XElement) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.#ctor* + name: FanucMacroCallSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.FanucMacroCallSyntax + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.New + nameWithType: FanucMacroCallSyntax.FanucMacroCallSyntax + nameWithType.vb: FanucMacroCallSyntax.New +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + nameWithType: FanucMacroCallSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) + nameWithType.vb: FanucMacroCallSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Build* + name: Build + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax_Build_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Build + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Build + nameWithType: FanucMacroCallSyntax.Build +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.MakeXmlSource(String, String, Boolean) + nameWithType: FanucMacroCallSyntax.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucMacroCallSyntax.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.MakeXmlSource + nameWithType: FanucMacroCallSyntax.MakeXmlSource +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Name + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax_Name + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Name + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Name + nameWithType: FanucMacroCallSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Name* + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax_Name_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Name + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.Name + nameWithType: FanucMacroCallSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.XName + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax_XName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.XName + nameWithType: FanucMacroCallSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.XName* + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucMacroCallSyntax_XName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.XName + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucMacroCallSyntax.XName + nameWithType: FanucMacroCallSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax + name: FanucModalMacroSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax + nameWithType: FanucModalMacroSyntax +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.#ctor + name: FanucModalMacroSyntax() + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax__ctor + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.#ctor + name.vb: New() + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.FanucModalMacroSyntax() + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.New() + nameWithType: FanucModalMacroSyntax.FanucModalMacroSyntax() + nameWithType.vb: FanucModalMacroSyntax.New() +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.#ctor(System.Xml.Linq.XElement) + name: FanucModalMacroSyntax(XElement) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.FanucModalMacroSyntax(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.New(System.Xml.Linq.XElement) + nameWithType: FanucModalMacroSyntax.FanucModalMacroSyntax(XElement) + nameWithType.vb: FanucModalMacroSyntax.New(XElement) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.#ctor* + name: FanucModalMacroSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.FanucModalMacroSyntax + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.New + nameWithType: FanucModalMacroSyntax.FanucModalMacroSyntax + nameWithType.vb: FanucModalMacroSyntax.New +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + nameWithType: FanucModalMacroSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) + nameWithType.vb: FanucModalMacroSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Build* + name: Build + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Build_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Build + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Build + nameWithType: FanucModalMacroSyntax.Build +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Expansion + name: Expansion + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Expansion + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Expansion + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Expansion + nameWithType: FanucModalMacroSyntax.Expansion +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Expansion* + name: Expansion + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Expansion_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Expansion + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Expansion + nameWithType: FanucModalMacroSyntax.Expansion +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.MakeXmlSource(String, String, Boolean) + nameWithType: FanucModalMacroSyntax.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucModalMacroSyntax.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.MakeXmlSource + nameWithType: FanucModalMacroSyntax.MakeXmlSource +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Name + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Name + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Name + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Name + nameWithType: FanucModalMacroSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Name* + name: Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Name_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Name + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Name + nameWithType: FanucModalMacroSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Phase + name: Phase + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Phase + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Phase + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Phase + nameWithType: FanucModalMacroSyntax.Phase +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Phase* + name: Phase + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Phase_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Phase + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Phase + nameWithType: FanucModalMacroSyntax.Phase +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Setup + name: Setup + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Setup + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Setup + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Setup + nameWithType: FanucModalMacroSyntax.Setup +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Setup* + name: Setup + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_Setup_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Setup + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.Setup + nameWithType: FanucModalMacroSyntax.Setup +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase + name: FanucModalMacroSyntax.SyntaxPhase + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase + nameWithType: FanucModalMacroSyntax.SyntaxPhase +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.Expansion + name: Expansion + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_SyntaxPhase_Expansion + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.Expansion + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.Expansion + nameWithType: FanucModalMacroSyntax.SyntaxPhase.Expansion +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.Setup + name: Setup + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_SyntaxPhase_Setup + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.Setup + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.SyntaxPhase.Setup + nameWithType: FanucModalMacroSyntax.SyntaxPhase.Setup +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.XName + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_XName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.XName + nameWithType: FanucModalMacroSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.XName* + name: XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucModalMacroSyntax_XName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.XName + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucModalMacroSyntax.XName + nameWithType: FanucModalMacroSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax + name: FanucSystemControlVariableSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax + nameWithType: FanucSystemControlVariableSyntax +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.#ctor + name: FanucSystemControlVariableSyntax() + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax__ctor + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.#ctor + name.vb: New() + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax() + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.New() + nameWithType: FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax() + nameWithType.vb: FanucSystemControlVariableSyntax.New() +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.#ctor(System.Xml.Linq.XElement) + name: FanucSystemControlVariableSyntax(XElement) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.New(System.Xml.Linq.XElement) + nameWithType: FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax(XElement) + nameWithType.vb: FanucSystemControlVariableSyntax.New(XElement) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.#ctor* + name: FanucSystemControlVariableSyntax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.New nameWithType: FanucSystemControlVariableSyntax.FanucSystemControlVariableSyntax nameWithType.vb: FanucSystemControlVariableSyntax.New -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ - commentId: M:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) - fullName.vb: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) nameWithType: FanucSystemControlVariableSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) nameWithType.vb: FanucSystemControlVariableSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Build* +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Build* name: Build - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_Build_ - commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Build + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_Build_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Build isSpec: "True" - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Build + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Build nameWithType: FanucSystemControlVariableSyntax.Build -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.MakeXmlSource(System.String,System.String,System.Boolean) +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.MakeXmlSource(System.String,System.String,System.Boolean) name: MakeXmlSource(string, string, bool) - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ - commentId: M:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.MakeXmlSource(System.String,System.String,System.Boolean) name.vb: MakeXmlSource(String, String, Boolean) - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.MakeXmlSource(string, string, bool) - fullName.vb: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.MakeXmlSource(String, String, Boolean) nameWithType: FanucSystemControlVariableSyntax.MakeXmlSource(string, string, bool) nameWithType.vb: FanucSystemControlVariableSyntax.MakeXmlSource(String, String, Boolean) -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.MakeXmlSource* +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.MakeXmlSource* name: MakeXmlSource - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_MakeXmlSource_ - commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.MakeXmlSource + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.MakeXmlSource isSpec: "True" - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.MakeXmlSource + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.MakeXmlSource nameWithType: FanucSystemControlVariableSyntax.MakeXmlSource -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Name +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Name name: Name - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_Name - commentId: P:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Name - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_Name + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Name + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Name nameWithType: FanucSystemControlVariableSyntax.Name -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Name* +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Name* name: Name - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_Name_ - commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Name + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_Name_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Name isSpec: "True" - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.Name + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.Name nameWithType: FanucSystemControlVariableSyntax.Name -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.SystemControlMax +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.SystemControlMax name: SystemControlMax - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_SystemControlMax - commentId: F:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.SystemControlMax - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.SystemControlMax + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_SystemControlMax + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.SystemControlMax + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.SystemControlMax nameWithType: FanucSystemControlVariableSyntax.SystemControlMax -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.SystemControlMin +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.SystemControlMin name: SystemControlMin - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_SystemControlMin - commentId: F:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.SystemControlMin - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.SystemControlMin + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_SystemControlMin + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.SystemControlMin + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.SystemControlMin nameWithType: FanucSystemControlVariableSyntax.SystemControlMin -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.UnsupportedDiagId +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.UnsupportedDiagId name: UnsupportedDiagId - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_UnsupportedDiagId - commentId: F:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.UnsupportedDiagId - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.UnsupportedDiagId + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_UnsupportedDiagId + commentId: F:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.UnsupportedDiagId + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.UnsupportedDiagId nameWithType: FanucSystemControlVariableSyntax.UnsupportedDiagId -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.XName name: XName - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_XName - commentId: P:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.XName - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_XName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.XName nameWithType: FanucSystemControlVariableSyntax.XName -- uid: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.XName* +- uid: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.XName* name: XName - href: api/Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_FanucSystemControlVariableSyntax_XName_ - commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.XName + href: api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.html#Hi_NcParsers_EvaluationSyntaxs_Fanuc_FanucSystemControlVariableSyntax_XName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.XName isSpec: "True" - fullName: Hi.NcParsers.EvaluationSyntaxs.FanucSystemControlVariableSyntax.XName + fullName: Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucSystemControlVariableSyntax.XName nameWithType: FanucSystemControlVariableSyntax.XName +- uid: Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil + name: LabelScanUtil + href: api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil + fullName: Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil + nameWithType: LabelScanUtil +- uid: Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.SegmentAndSkipUntilLabel(Hi.NcParsers.Segmenters.ISegmenter,System.String,System.String,System.Int32,System.Int32,System.Int32,System.Collections.Generic.List{Hi.NcParsers.Syntaxs.ISituNcSyntax},Hi.NcParsers.NcDiagnosticProgress) + name: SegmentAndSkipUntilLabel(ISegmenter, string, string, int, int, int, List, NcDiagnosticProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html#Hi_NcParsers_EvaluationSyntaxs_LabelScanUtil_SegmentAndSkipUntilLabel_Hi_NcParsers_Segmenters_ISegmenter_System_String_System_String_System_Int32_System_Int32_System_Int32_System_Collections_Generic_List_Hi_NcParsers_Syntaxs_ISituNcSyntax__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.SegmentAndSkipUntilLabel(Hi.NcParsers.Segmenters.ISegmenter,System.String,System.String,System.Int32,System.Int32,System.Int32,System.Collections.Generic.List{Hi.NcParsers.Syntaxs.ISituNcSyntax},Hi.NcParsers.NcDiagnosticProgress) + name.vb: SegmentAndSkipUntilLabel(ISegmenter, String, String, Integer, Integer, Integer, List(Of ISituNcSyntax), NcDiagnosticProgress) + fullName: Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.SegmentAndSkipUntilLabel(Hi.NcParsers.Segmenters.ISegmenter, string, string, int, int, int, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.SegmentAndSkipUntilLabel(Hi.NcParsers.Segmenters.ISegmenter, String, String, Integer, Integer, Integer, System.Collections.Generic.List(Of Hi.NcParsers.Syntaxs.ISituNcSyntax), Hi.NcParsers.NcDiagnosticProgress) + nameWithType: LabelScanUtil.SegmentAndSkipUntilLabel(ISegmenter, string, string, int, int, int, List, NcDiagnosticProgress) + nameWithType.vb: LabelScanUtil.SegmentAndSkipUntilLabel(ISegmenter, String, String, Integer, Integer, Integer, List(Of ISituNcSyntax), NcDiagnosticProgress) +- uid: Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.SegmentAndSkipUntilLabel* + name: SegmentAndSkipUntilLabel + href: api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html#Hi_NcParsers_EvaluationSyntaxs_LabelScanUtil_SegmentAndSkipUntilLabel_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.SegmentAndSkipUntilLabel + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.SegmentAndSkipUntilLabel + nameWithType: LabelScanUtil.SegmentAndSkipUntilLabel +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver + name: MacroFileResolver + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver + nameWithType: MacroFileResolver +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.FilenamePatterns + name: FilenamePatterns + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_FilenamePatterns + commentId: F:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.FilenamePatterns + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.FilenamePatterns + nameWithType: MacroFileResolver.FilenamePatterns +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ReadLines(System.Int32,System.String,System.String) + name: ReadLines(int, string, string) + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ReadLines_System_Int32_System_String_System_String_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ReadLines(System.Int32,System.String,System.String) + name.vb: ReadLines(Integer, String, String) + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ReadLines(int, string, string) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ReadLines(Integer, String, String) + nameWithType: MacroFileResolver.ReadLines(int, string, string) + nameWithType.vb: MacroFileResolver.ReadLines(Integer, String, String) +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ReadLines* + name: ReadLines + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ReadLines_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ReadLines + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ReadLines + nameWithType: MacroFileResolver.ReadLines +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.Resolve(System.String,System.Int32,System.String) + name: Resolve(string, int, string) + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_Resolve_System_String_System_Int32_System_String_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.Resolve(System.String,System.Int32,System.String) + name.vb: Resolve(String, Integer, String) + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.Resolve(string, int, string) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.Resolve(String, Integer, String) + nameWithType: MacroFileResolver.Resolve(string, int, string) + nameWithType.vb: MacroFileResolver.Resolve(String, Integer, String) +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.Resolve* + name: Resolve + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_Resolve_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.Resolve + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.Resolve + nameWithType: MacroFileResolver.Resolve +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile + name: MacroFileResolver.ResolvedFile + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile + nameWithType: MacroFileResolver.ResolvedFile +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.#ctor(System.String,System.String,System.String) + name: ResolvedFile(string, string, string) + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile__ctor_System_String_System_String_System_String_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.#ctor(System.String,System.String,System.String) + name.vb: New(String, String, String) + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.ResolvedFile(string, string, string) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.New(String, String, String) + nameWithType: MacroFileResolver.ResolvedFile.ResolvedFile(string, string, string) + nameWithType.vb: MacroFileResolver.ResolvedFile.New(String, String, String) +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.#ctor* + name: ResolvedFile + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile__ctor_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.ResolvedFile + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.New + nameWithType: MacroFileResolver.ResolvedFile.ResolvedFile + nameWithType.vb: MacroFileResolver.ResolvedFile.New +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.AbsPath + name: AbsPath + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile_AbsPath + commentId: P:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.AbsPath + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.AbsPath + nameWithType: MacroFileResolver.ResolvedFile.AbsPath +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.AbsPath* + name: AbsPath + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile_AbsPath_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.AbsPath + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.AbsPath + nameWithType: MacroFileResolver.ResolvedFile.AbsPath +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.FileName + name: FileName + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile_FileName + commentId: P:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.FileName + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.FileName + nameWithType: MacroFileResolver.ResolvedFile.FileName +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.FileName* + name: FileName + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile_FileName_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.FileName + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.FileName + nameWithType: MacroFileResolver.ResolvedFile.FileName +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.RelPath + name: RelPath + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile_RelPath + commentId: P:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.RelPath + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.RelPath + nameWithType: MacroFileResolver.ResolvedFile.RelPath +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.RelPath* + name: RelPath + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.html#Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile_RelPath_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.RelPath + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile.RelPath + nameWithType: MacroFileResolver.ResolvedFile.RelPath +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil + name: MacroInlineUtil + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html + commentId: T:Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil + nameWithType: MacroInlineUtil +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.ApplyLocalBindings(System.Text.Json.Nodes.JsonObject,System.Collections.Generic.IReadOnlyDictionary{System.String,System.Double}) + name: ApplyLocalBindings(JsonObject, IReadOnlyDictionary) + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html#Hi_NcParsers_EvaluationSyntaxs_MacroInlineUtil_ApplyLocalBindings_System_Text_Json_Nodes_JsonObject_System_Collections_Generic_IReadOnlyDictionary_System_String_System_Double__ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.ApplyLocalBindings(System.Text.Json.Nodes.JsonObject,System.Collections.Generic.IReadOnlyDictionary{System.String,System.Double}) + name.vb: ApplyLocalBindings(JsonObject, IReadOnlyDictionary(Of String, Double)) + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.ApplyLocalBindings(System.Text.Json.Nodes.JsonObject, System.Collections.Generic.IReadOnlyDictionary) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.ApplyLocalBindings(System.Text.Json.Nodes.JsonObject, System.Collections.Generic.IReadOnlyDictionary(Of String, Double)) + nameWithType: MacroInlineUtil.ApplyLocalBindings(JsonObject, IReadOnlyDictionary) + nameWithType.vb: MacroInlineUtil.ApplyLocalBindings(JsonObject, IReadOnlyDictionary(Of String, Double)) +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.ApplyLocalBindings* + name: ApplyLocalBindings + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html#Hi_NcParsers_EvaluationSyntaxs_MacroInlineUtil_ApplyLocalBindings_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.ApplyLocalBindings + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.ApplyLocalBindings + nameWithType: MacroInlineUtil.ApplyLocalBindings +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildInlinedPieces(Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile,System.Int32,System.Collections.Generic.IReadOnlyDictionary{System.String,System.Double},System.Text.Json.Nodes.JsonObject,System.Text.Json.Nodes.JsonObject,Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency,Hi.NcParsers.Segmenters.ISegmenter,System.Int32,Hi.NcParsers.NcDiagnosticProgress) + name: BuildInlinedPieces(ResolvedFile, int, IReadOnlyDictionary, JsonObject, JsonObject, FileIndexCounterDependency, ISegmenter, int, NcDiagnosticProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html#Hi_NcParsers_EvaluationSyntaxs_MacroInlineUtil_BuildInlinedPieces_Hi_NcParsers_EvaluationSyntaxs_MacroFileResolver_ResolvedFile_System_Int32_System_Collections_Generic_IReadOnlyDictionary_System_String_System_Double__System_Text_Json_Nodes_JsonObject_System_Text_Json_Nodes_JsonObject_Hi_NcParsers_Dependencys_SystemWired_FileIndexCounterDependency_Hi_NcParsers_Segmenters_ISegmenter_System_Int32_Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildInlinedPieces(Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile,System.Int32,System.Collections.Generic.IReadOnlyDictionary{System.String,System.Double},System.Text.Json.Nodes.JsonObject,System.Text.Json.Nodes.JsonObject,Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency,Hi.NcParsers.Segmenters.ISegmenter,System.Int32,Hi.NcParsers.NcDiagnosticProgress) + name.vb: BuildInlinedPieces(ResolvedFile, Integer, IReadOnlyDictionary(Of String, Double), JsonObject, JsonObject, FileIndexCounterDependency, ISegmenter, Integer, NcDiagnosticProgress) + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildInlinedPieces(Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile, int, System.Collections.Generic.IReadOnlyDictionary, System.Text.Json.Nodes.JsonObject, System.Text.Json.Nodes.JsonObject, Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency, Hi.NcParsers.Segmenters.ISegmenter, int, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildInlinedPieces(Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.ResolvedFile, Integer, System.Collections.Generic.IReadOnlyDictionary(Of String, Double), System.Text.Json.Nodes.JsonObject, System.Text.Json.Nodes.JsonObject, Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency, Hi.NcParsers.Segmenters.ISegmenter, Integer, Hi.NcParsers.NcDiagnosticProgress) + nameWithType: MacroInlineUtil.BuildInlinedPieces(MacroFileResolver.ResolvedFile, int, IReadOnlyDictionary, JsonObject, JsonObject, FileIndexCounterDependency, ISegmenter, int, NcDiagnosticProgress) + nameWithType.vb: MacroInlineUtil.BuildInlinedPieces(MacroFileResolver.ResolvedFile, Integer, IReadOnlyDictionary(Of String, Double), JsonObject, JsonObject, FileIndexCounterDependency, ISegmenter, Integer, NcDiagnosticProgress) +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildInlinedPieces* + name: BuildInlinedPieces + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html#Hi_NcParsers_EvaluationSyntaxs_MacroInlineUtil_BuildInlinedPieces_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildInlinedPieces + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildInlinedPieces + nameWithType: MacroInlineUtil.BuildInlinedPieces +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildLocalBindings(System.Text.Json.Nodes.JsonObject) + name: BuildLocalBindings(JsonObject) + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html#Hi_NcParsers_EvaluationSyntaxs_MacroInlineUtil_BuildLocalBindings_System_Text_Json_Nodes_JsonObject_ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildLocalBindings(System.Text.Json.Nodes.JsonObject) + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildLocalBindings(System.Text.Json.Nodes.JsonObject) + nameWithType: MacroInlineUtil.BuildLocalBindings(JsonObject) +- uid: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildLocalBindings* + name: BuildLocalBindings + href: api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html#Hi_NcParsers_EvaluationSyntaxs_MacroInlineUtil_BuildLocalBindings_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildLocalBindings + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.BuildLocalBindings + nameWithType: MacroInlineUtil.BuildLocalBindings - uid: Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax name: RetainedCommonVariableReadingSyntax href: api/Hi.NcParsers.EvaluationSyntaxs.RetainedCommonVariableReadingSyntax.html @@ -125735,15 +126872,15 @@ references: fullName.vb: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.New() nameWithType: SubProgramReturnSyntax.SubProgramReturnSyntax() nameWithType.vb: SubProgramReturnSyntax.New() -- uid: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.#ctor(System.Xml.Linq.XElement) - name: SubProgramReturnSyntax(XElement) - href: api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html#Hi_NcParsers_EvaluationSyntaxs_SubProgramReturnSyntax__ctor_System_Xml_Linq_XElement_ - commentId: M:Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.#ctor(System.Xml.Linq.XElement) - name.vb: New(XElement) - fullName: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.SubProgramReturnSyntax(System.Xml.Linq.XElement) - fullName.vb: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.New(System.Xml.Linq.XElement) - nameWithType: SubProgramReturnSyntax.SubProgramReturnSyntax(XElement) - nameWithType.vb: SubProgramReturnSyntax.New(XElement) +- uid: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object}) + name: SubProgramReturnSyntax(XElement, string, IProgress) + href: api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html#Hi_NcParsers_EvaluationSyntaxs_SubProgramReturnSyntax__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_System_Object__ + commentId: M:Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{System.Object}) + name.vb: New(XElement, String, IProgress(Of Object)) + fullName: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.SubProgramReturnSyntax(System.Xml.Linq.XElement, string, System.IProgress) + fullName.vb: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.New(System.Xml.Linq.XElement, String, System.IProgress(Of Object)) + nameWithType: SubProgramReturnSyntax.SubProgramReturnSyntax(XElement, string, IProgress) + nameWithType.vb: SubProgramReturnSyntax.New(XElement, String, IProgress(Of Object)) - uid: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.#ctor* name: SubProgramReturnSyntax href: api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html#Hi_NcParsers_EvaluationSyntaxs_SubProgramReturnSyntax__ctor_ @@ -125770,6 +126907,19 @@ references: isSpec: "True" fullName: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.Build nameWithType: SubProgramReturnSyntax.Build +- uid: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.LabelProbeSyntaxes + name: LabelProbeSyntaxes + href: api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html#Hi_NcParsers_EvaluationSyntaxs_SubProgramReturnSyntax_LabelProbeSyntaxes + commentId: P:Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.LabelProbeSyntaxes + fullName: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.LabelProbeSyntaxes + nameWithType: SubProgramReturnSyntax.LabelProbeSyntaxes +- uid: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.LabelProbeSyntaxes* + name: LabelProbeSyntaxes + href: api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html#Hi_NcParsers_EvaluationSyntaxs_SubProgramReturnSyntax_LabelProbeSyntaxes_ + commentId: Overload:Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.LabelProbeSyntaxes + isSpec: "True" + fullName: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.LabelProbeSyntaxes + nameWithType: SubProgramReturnSyntax.LabelProbeSyntaxes - uid: Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.MakeXmlSource(System.String,System.String,System.Boolean) name: MakeXmlSource(string, string, bool) href: api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html#Hi_NcParsers_EvaluationSyntaxs_SubProgramReturnSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ @@ -126040,6 +127190,95 @@ references: isSpec: "True" fullName: Hi.NcParsers.IGetSentence.GetSentence nameWithType: IGetSentence.GetSentence +- uid: Hi.NcParsers.ISentenceCarrier + name: ISentenceCarrier + href: api/Hi.NcParsers.ISentenceCarrier.html + commentId: T:Hi.NcParsers.ISentenceCarrier + fullName: Hi.NcParsers.ISentenceCarrier + nameWithType: ISentenceCarrier +- uid: Hi.NcParsers.ISentenceIndexed + name: ISentenceIndexed + href: api/Hi.NcParsers.ISentenceIndexed.html + commentId: T:Hi.NcParsers.ISentenceIndexed + fullName: Hi.NcParsers.ISentenceIndexed + nameWithType: ISentenceIndexed +- uid: Hi.NcParsers.ISentenceIndexed.SentenceIndex + name: SentenceIndex + href: api/Hi.NcParsers.ISentenceIndexed.html#Hi_NcParsers_ISentenceIndexed_SentenceIndex + commentId: P:Hi.NcParsers.ISentenceIndexed.SentenceIndex + fullName: Hi.NcParsers.ISentenceIndexed.SentenceIndex + nameWithType: ISentenceIndexed.SentenceIndex +- uid: Hi.NcParsers.ISentenceIndexed.SentenceIndex* + name: SentenceIndex + href: api/Hi.NcParsers.ISentenceIndexed.html#Hi_NcParsers_ISentenceIndexed_SentenceIndex_ + commentId: Overload:Hi.NcParsers.ISentenceIndexed.SentenceIndex + isSpec: "True" + fullName: Hi.NcParsers.ISentenceIndexed.SentenceIndex + nameWithType: ISentenceIndexed.SentenceIndex +- uid: Hi.NcParsers.IndexedSentence + name: IndexedSentence + href: api/Hi.NcParsers.IndexedSentence.html + commentId: T:Hi.NcParsers.IndexedSentence + fullName: Hi.NcParsers.IndexedSentence + nameWithType: IndexedSentence +- uid: Hi.NcParsers.IndexedSentence.#ctor(Hi.NcParsers.Sentence,System.Int32) + name: IndexedSentence(Sentence, int) + href: api/Hi.NcParsers.IndexedSentence.html#Hi_NcParsers_IndexedSentence__ctor_Hi_NcParsers_Sentence_System_Int32_ + commentId: M:Hi.NcParsers.IndexedSentence.#ctor(Hi.NcParsers.Sentence,System.Int32) + name.vb: New(Sentence, Integer) + fullName: Hi.NcParsers.IndexedSentence.IndexedSentence(Hi.NcParsers.Sentence, int) + fullName.vb: Hi.NcParsers.IndexedSentence.New(Hi.NcParsers.Sentence, Integer) + nameWithType: IndexedSentence.IndexedSentence(Sentence, int) + nameWithType.vb: IndexedSentence.New(Sentence, Integer) +- uid: Hi.NcParsers.IndexedSentence.#ctor* + name: IndexedSentence + href: api/Hi.NcParsers.IndexedSentence.html#Hi_NcParsers_IndexedSentence__ctor_ + commentId: Overload:Hi.NcParsers.IndexedSentence.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.IndexedSentence.IndexedSentence + fullName.vb: Hi.NcParsers.IndexedSentence.New + nameWithType: IndexedSentence.IndexedSentence + nameWithType.vb: IndexedSentence.New +- uid: Hi.NcParsers.IndexedSentence.GetSentence + name: GetSentence() + href: api/Hi.NcParsers.IndexedSentence.html#Hi_NcParsers_IndexedSentence_GetSentence + commentId: M:Hi.NcParsers.IndexedSentence.GetSentence + fullName: Hi.NcParsers.IndexedSentence.GetSentence() + nameWithType: IndexedSentence.GetSentence() +- uid: Hi.NcParsers.IndexedSentence.GetSentence* + name: GetSentence + href: api/Hi.NcParsers.IndexedSentence.html#Hi_NcParsers_IndexedSentence_GetSentence_ + commentId: Overload:Hi.NcParsers.IndexedSentence.GetSentence + isSpec: "True" + fullName: Hi.NcParsers.IndexedSentence.GetSentence + nameWithType: IndexedSentence.GetSentence +- uid: Hi.NcParsers.IndexedSentence.Sentence + name: Sentence + href: api/Hi.NcParsers.IndexedSentence.html#Hi_NcParsers_IndexedSentence_Sentence + commentId: P:Hi.NcParsers.IndexedSentence.Sentence + fullName: Hi.NcParsers.IndexedSentence.Sentence + nameWithType: IndexedSentence.Sentence +- uid: Hi.NcParsers.IndexedSentence.Sentence* + name: Sentence + href: api/Hi.NcParsers.IndexedSentence.html#Hi_NcParsers_IndexedSentence_Sentence_ + commentId: Overload:Hi.NcParsers.IndexedSentence.Sentence + isSpec: "True" + fullName: Hi.NcParsers.IndexedSentence.Sentence + nameWithType: IndexedSentence.Sentence +- uid: Hi.NcParsers.IndexedSentence.SentenceIndex + name: SentenceIndex + href: api/Hi.NcParsers.IndexedSentence.html#Hi_NcParsers_IndexedSentence_SentenceIndex + commentId: P:Hi.NcParsers.IndexedSentence.SentenceIndex + fullName: Hi.NcParsers.IndexedSentence.SentenceIndex + nameWithType: IndexedSentence.SentenceIndex +- uid: Hi.NcParsers.IndexedSentence.SentenceIndex* + name: SentenceIndex + href: api/Hi.NcParsers.IndexedSentence.html#Hi_NcParsers_IndexedSentence_SentenceIndex_ + commentId: Overload:Hi.NcParsers.IndexedSentence.SentenceIndex + isSpec: "True" + fullName: Hi.NcParsers.IndexedSentence.SentenceIndex + nameWithType: IndexedSentence.SentenceIndex - uid: Hi.NcParsers.Initializers name: Hi.NcParsers.Initializers href: api/Hi.NcParsers.Initializers.html @@ -126819,6 +128058,44 @@ references: isSpec: "True" fullName: Hi.NcParsers.Keywords.BlockSkip.Symbol nameWithType: BlockSkip.Symbol +- uid: Hi.NcParsers.Keywords.CallFrame + name: CallFrame + href: api/Hi.NcParsers.Keywords.CallFrame.html + commentId: T:Hi.NcParsers.Keywords.CallFrame + fullName: Hi.NcParsers.Keywords.CallFrame + nameWithType: CallFrame +- uid: Hi.NcParsers.Keywords.CallFrame.CallerFilePath + name: CallerFilePath + href: api/Hi.NcParsers.Keywords.CallFrame.html#Hi_NcParsers_Keywords_CallFrame_CallerFilePath + commentId: P:Hi.NcParsers.Keywords.CallFrame.CallerFilePath + fullName: Hi.NcParsers.Keywords.CallFrame.CallerFilePath + nameWithType: CallFrame.CallerFilePath +- uid: Hi.NcParsers.Keywords.CallFrame.CallerFilePath* + name: CallerFilePath + href: api/Hi.NcParsers.Keywords.CallFrame.html#Hi_NcParsers_Keywords_CallFrame_CallerFilePath_ + commentId: Overload:Hi.NcParsers.Keywords.CallFrame.CallerFilePath + isSpec: "True" + fullName: Hi.NcParsers.Keywords.CallFrame.CallerFilePath + nameWithType: CallFrame.CallerFilePath +- uid: Hi.NcParsers.Keywords.CallStack + name: CallStack + href: api/Hi.NcParsers.Keywords.CallStack.html + commentId: T:Hi.NcParsers.Keywords.CallStack + fullName: Hi.NcParsers.Keywords.CallStack + nameWithType: CallStack +- uid: Hi.NcParsers.Keywords.CallStack.Frames + name: Frames + href: api/Hi.NcParsers.Keywords.CallStack.html#Hi_NcParsers_Keywords_CallStack_Frames + commentId: P:Hi.NcParsers.Keywords.CallStack.Frames + fullName: Hi.NcParsers.Keywords.CallStack.Frames + nameWithType: CallStack.Frames +- uid: Hi.NcParsers.Keywords.CallStack.Frames* + name: Frames + href: api/Hi.NcParsers.Keywords.CallStack.html#Hi_NcParsers_Keywords_CallStack_Frames_ + commentId: Overload:Hi.NcParsers.Keywords.CallStack.Frames + isSpec: "True" + fullName: Hi.NcParsers.Keywords.CallStack.Frames + nameWithType: CallStack.Frames - uid: Hi.NcParsers.Keywords.CannedCycle name: CannedCycle href: api/Hi.NcParsers.Keywords.CannedCycle.html @@ -127104,6 +128381,251 @@ references: commentId: F:Hi.NcParsers.Keywords.Fanuc.FanucKeywords.G43p4 fullName: Hi.NcParsers.Keywords.Fanuc.FanucKeywords.G43p4 nameWithType: FanucKeywords.G43p4 +- uid: Hi.NcParsers.Keywords.FanucGoto + name: FanucGoto + href: api/Hi.NcParsers.Keywords.FanucGoto.html + commentId: T:Hi.NcParsers.Keywords.FanucGoto + fullName: Hi.NcParsers.Keywords.FanucGoto + nameWithType: FanucGoto +- uid: Hi.NcParsers.Keywords.FanucGoto.Condition + name: Condition + href: api/Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_Condition + commentId: P:Hi.NcParsers.Keywords.FanucGoto.Condition + fullName: Hi.NcParsers.Keywords.FanucGoto.Condition + nameWithType: FanucGoto.Condition +- uid: Hi.NcParsers.Keywords.FanucGoto.Condition* + name: Condition + href: api/Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_Condition_ + commentId: Overload:Hi.NcParsers.Keywords.FanucGoto.Condition + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucGoto.Condition + nameWithType: FanucGoto.Condition +- uid: Hi.NcParsers.Keywords.FanucGoto.Fired + name: Fired + href: api/Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_Fired + commentId: P:Hi.NcParsers.Keywords.FanucGoto.Fired + fullName: Hi.NcParsers.Keywords.FanucGoto.Fired + nameWithType: FanucGoto.Fired +- uid: Hi.NcParsers.Keywords.FanucGoto.Fired* + name: Fired + href: api/Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_Fired_ + commentId: Overload:Hi.NcParsers.Keywords.FanucGoto.Fired + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucGoto.Fired + nameWithType: FanucGoto.Fired +- uid: Hi.NcParsers.Keywords.FanucGoto.N + name: N + href: api/Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_N + commentId: P:Hi.NcParsers.Keywords.FanucGoto.N + fullName: Hi.NcParsers.Keywords.FanucGoto.N + nameWithType: FanucGoto.N +- uid: Hi.NcParsers.Keywords.FanucGoto.N* + name: N + href: api/Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_N_ + commentId: Overload:Hi.NcParsers.Keywords.FanucGoto.N + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucGoto.N + nameWithType: FanucGoto.N +- uid: Hi.NcParsers.Keywords.FanucGoto.Term + name: Term + href: api/Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_Term + commentId: P:Hi.NcParsers.Keywords.FanucGoto.Term + fullName: Hi.NcParsers.Keywords.FanucGoto.Term + nameWithType: FanucGoto.Term +- uid: Hi.NcParsers.Keywords.FanucGoto.Term* + name: Term + href: api/Hi.NcParsers.Keywords.FanucGoto.html#Hi_NcParsers_Keywords_FanucGoto_Term_ + commentId: Overload:Hi.NcParsers.Keywords.FanucGoto.Term + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucGoto.Term + nameWithType: FanucGoto.Term +- uid: Hi.NcParsers.Keywords.FanucIfThen + name: FanucIfThen + href: api/Hi.NcParsers.Keywords.FanucIfThen.html + commentId: T:Hi.NcParsers.Keywords.FanucIfThen + fullName: Hi.NcParsers.Keywords.FanucIfThen + nameWithType: FanucIfThen +- uid: Hi.NcParsers.Keywords.FanucIfThen.Applied + name: Applied + href: api/Hi.NcParsers.Keywords.FanucIfThen.html#Hi_NcParsers_Keywords_FanucIfThen_Applied + commentId: P:Hi.NcParsers.Keywords.FanucIfThen.Applied + fullName: Hi.NcParsers.Keywords.FanucIfThen.Applied + nameWithType: FanucIfThen.Applied +- uid: Hi.NcParsers.Keywords.FanucIfThen.Applied* + name: Applied + href: api/Hi.NcParsers.Keywords.FanucIfThen.html#Hi_NcParsers_Keywords_FanucIfThen_Applied_ + commentId: Overload:Hi.NcParsers.Keywords.FanucIfThen.Applied + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucIfThen.Applied + nameWithType: FanucIfThen.Applied +- uid: Hi.NcParsers.Keywords.FanucIfThen.BodyText + name: BodyText + href: api/Hi.NcParsers.Keywords.FanucIfThen.html#Hi_NcParsers_Keywords_FanucIfThen_BodyText + commentId: P:Hi.NcParsers.Keywords.FanucIfThen.BodyText + fullName: Hi.NcParsers.Keywords.FanucIfThen.BodyText + nameWithType: FanucIfThen.BodyText +- uid: Hi.NcParsers.Keywords.FanucIfThen.BodyText* + name: BodyText + href: api/Hi.NcParsers.Keywords.FanucIfThen.html#Hi_NcParsers_Keywords_FanucIfThen_BodyText_ + commentId: Overload:Hi.NcParsers.Keywords.FanucIfThen.BodyText + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucIfThen.BodyText + nameWithType: FanucIfThen.BodyText +- uid: Hi.NcParsers.Keywords.FanucIfThen.Condition + name: Condition + href: api/Hi.NcParsers.Keywords.FanucIfThen.html#Hi_NcParsers_Keywords_FanucIfThen_Condition + commentId: P:Hi.NcParsers.Keywords.FanucIfThen.Condition + fullName: Hi.NcParsers.Keywords.FanucIfThen.Condition + nameWithType: FanucIfThen.Condition +- uid: Hi.NcParsers.Keywords.FanucIfThen.Condition* + name: Condition + href: api/Hi.NcParsers.Keywords.FanucIfThen.html#Hi_NcParsers_Keywords_FanucIfThen_Condition_ + commentId: Overload:Hi.NcParsers.Keywords.FanucIfThen.Condition + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucIfThen.Condition + nameWithType: FanucIfThen.Condition +- uid: Hi.NcParsers.Keywords.FanucMacroCall + name: FanucMacroCall + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html + commentId: T:Hi.NcParsers.Keywords.FanucMacroCall + fullName: Hi.NcParsers.Keywords.FanucMacroCall + nameWithType: FanucMacroCall +- uid: Hi.NcParsers.Keywords.FanucMacroCall.Args + name: Args + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_Args + commentId: P:Hi.NcParsers.Keywords.FanucMacroCall.Args + fullName: Hi.NcParsers.Keywords.FanucMacroCall.Args + nameWithType: FanucMacroCall.Args +- uid: Hi.NcParsers.Keywords.FanucMacroCall.Args* + name: Args + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_Args_ + commentId: Overload:Hi.NcParsers.Keywords.FanucMacroCall.Args + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucMacroCall.Args + nameWithType: FanucMacroCall.Args +- uid: Hi.NcParsers.Keywords.FanucMacroCall.FileName + name: FileName + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_FileName + commentId: P:Hi.NcParsers.Keywords.FanucMacroCall.FileName + fullName: Hi.NcParsers.Keywords.FanucMacroCall.FileName + nameWithType: FanucMacroCall.FileName +- uid: Hi.NcParsers.Keywords.FanucMacroCall.FileName* + name: FileName + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_FileName_ + commentId: Overload:Hi.NcParsers.Keywords.FanucMacroCall.FileName + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucMacroCall.FileName + nameWithType: FanucMacroCall.FileName +- uid: Hi.NcParsers.Keywords.FanucMacroCall.L + name: L + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_L + commentId: P:Hi.NcParsers.Keywords.FanucMacroCall.L + fullName: Hi.NcParsers.Keywords.FanucMacroCall.L + nameWithType: FanucMacroCall.L +- uid: Hi.NcParsers.Keywords.FanucMacroCall.L* + name: L + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_L_ + commentId: Overload:Hi.NcParsers.Keywords.FanucMacroCall.L + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucMacroCall.L + nameWithType: FanucMacroCall.L +- uid: Hi.NcParsers.Keywords.FanucMacroCall.P + name: P + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_P + commentId: P:Hi.NcParsers.Keywords.FanucMacroCall.P + fullName: Hi.NcParsers.Keywords.FanucMacroCall.P + nameWithType: FanucMacroCall.P +- uid: Hi.NcParsers.Keywords.FanucMacroCall.P* + name: P + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_P_ + commentId: Overload:Hi.NcParsers.Keywords.FanucMacroCall.P + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucMacroCall.P + nameWithType: FanucMacroCall.P +- uid: Hi.NcParsers.Keywords.FanucMacroCall.Term + name: Term + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_Term + commentId: P:Hi.NcParsers.Keywords.FanucMacroCall.Term + fullName: Hi.NcParsers.Keywords.FanucMacroCall.Term + nameWithType: FanucMacroCall.Term +- uid: Hi.NcParsers.Keywords.FanucMacroCall.Term* + name: Term + href: api/Hi.NcParsers.Keywords.FanucMacroCall.html#Hi_NcParsers_Keywords_FanucMacroCall_Term_ + commentId: Overload:Hi.NcParsers.Keywords.FanucMacroCall.Term + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucMacroCall.Term + nameWithType: FanucMacroCall.Term +- uid: Hi.NcParsers.Keywords.FanucModalMacro + name: FanucModalMacro + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html + commentId: T:Hi.NcParsers.Keywords.FanucModalMacro + fullName: Hi.NcParsers.Keywords.FanucModalMacro + nameWithType: FanucModalMacro +- uid: Hi.NcParsers.Keywords.FanucModalMacro.Args + name: Args + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_Args + commentId: P:Hi.NcParsers.Keywords.FanucModalMacro.Args + fullName: Hi.NcParsers.Keywords.FanucModalMacro.Args + nameWithType: FanucModalMacro.Args +- uid: Hi.NcParsers.Keywords.FanucModalMacro.Args* + name: Args + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_Args_ + commentId: Overload:Hi.NcParsers.Keywords.FanucModalMacro.Args + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucModalMacro.Args + nameWithType: FanucModalMacro.Args +- uid: Hi.NcParsers.Keywords.FanucModalMacro.FileName + name: FileName + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_FileName + commentId: P:Hi.NcParsers.Keywords.FanucModalMacro.FileName + fullName: Hi.NcParsers.Keywords.FanucModalMacro.FileName + nameWithType: FanucModalMacro.FileName +- uid: Hi.NcParsers.Keywords.FanucModalMacro.FileName* + name: FileName + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_FileName_ + commentId: Overload:Hi.NcParsers.Keywords.FanucModalMacro.FileName + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucModalMacro.FileName + nameWithType: FanucModalMacro.FileName +- uid: Hi.NcParsers.Keywords.FanucModalMacro.L + name: L + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_L + commentId: P:Hi.NcParsers.Keywords.FanucModalMacro.L + fullName: Hi.NcParsers.Keywords.FanucModalMacro.L + nameWithType: FanucModalMacro.L +- uid: Hi.NcParsers.Keywords.FanucModalMacro.L* + name: L + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_L_ + commentId: Overload:Hi.NcParsers.Keywords.FanucModalMacro.L + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucModalMacro.L + nameWithType: FanucModalMacro.L +- uid: Hi.NcParsers.Keywords.FanucModalMacro.P + name: P + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_P + commentId: P:Hi.NcParsers.Keywords.FanucModalMacro.P + fullName: Hi.NcParsers.Keywords.FanucModalMacro.P + nameWithType: FanucModalMacro.P +- uid: Hi.NcParsers.Keywords.FanucModalMacro.P* + name: P + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_P_ + commentId: Overload:Hi.NcParsers.Keywords.FanucModalMacro.P + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucModalMacro.P + nameWithType: FanucModalMacro.P +- uid: Hi.NcParsers.Keywords.FanucModalMacro.Term + name: Term + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_Term + commentId: P:Hi.NcParsers.Keywords.FanucModalMacro.Term + fullName: Hi.NcParsers.Keywords.FanucModalMacro.Term + nameWithType: FanucModalMacro.Term +- uid: Hi.NcParsers.Keywords.FanucModalMacro.Term* + name: Term + href: api/Hi.NcParsers.Keywords.FanucModalMacro.html#Hi_NcParsers_Keywords_FanucModalMacro_Term_ + commentId: Overload:Hi.NcParsers.Keywords.FanucModalMacro.Term + isSpec: "True" + fullName: Hi.NcParsers.Keywords.FanucModalMacro.Term + nameWithType: FanucModalMacro.Term - uid: Hi.NcParsers.Keywords.FanucPathSmoothing name: FanucPathSmoothing href: api/Hi.NcParsers.Keywords.FanucPathSmoothing.html @@ -128516,6 +130038,41 @@ references: commentId: T:Hi.NcParsers.Keywords.MachineCoordinateState fullName: Hi.NcParsers.Keywords.MachineCoordinateState nameWithType: MachineCoordinateState +- uid: Hi.NcParsers.Keywords.MacroFrame + name: MacroFrame + href: api/Hi.NcParsers.Keywords.MacroFrame.html + commentId: T:Hi.NcParsers.Keywords.MacroFrame + fullName: Hi.NcParsers.Keywords.MacroFrame + nameWithType: MacroFrame +- uid: Hi.NcParsers.Keywords.MacroFrame.Get(System.Text.Json.Nodes.JsonObject) + name: Get(JsonObject) + href: api/Hi.NcParsers.Keywords.MacroFrame.html#Hi_NcParsers_Keywords_MacroFrame_Get_System_Text_Json_Nodes_JsonObject_ + commentId: M:Hi.NcParsers.Keywords.MacroFrame.Get(System.Text.Json.Nodes.JsonObject) + fullName: Hi.NcParsers.Keywords.MacroFrame.Get(System.Text.Json.Nodes.JsonObject) + nameWithType: MacroFrame.Get(JsonObject) +- uid: Hi.NcParsers.Keywords.MacroFrame.Get* + name: Get + href: api/Hi.NcParsers.Keywords.MacroFrame.html#Hi_NcParsers_Keywords_MacroFrame_Get_ + commentId: Overload:Hi.NcParsers.Keywords.MacroFrame.Get + isSpec: "True" + fullName: Hi.NcParsers.Keywords.MacroFrame.Get + nameWithType: MacroFrame.Get +- uid: Hi.NcParsers.Keywords.MacroFrame.Set(System.Text.Json.Nodes.JsonObject,System.Int32) + name: Set(JsonObject, int) + href: api/Hi.NcParsers.Keywords.MacroFrame.html#Hi_NcParsers_Keywords_MacroFrame_Set_System_Text_Json_Nodes_JsonObject_System_Int32_ + commentId: M:Hi.NcParsers.Keywords.MacroFrame.Set(System.Text.Json.Nodes.JsonObject,System.Int32) + name.vb: Set(JsonObject, Integer) + fullName: Hi.NcParsers.Keywords.MacroFrame.Set(System.Text.Json.Nodes.JsonObject, int) + fullName.vb: Hi.NcParsers.Keywords.MacroFrame.Set(System.Text.Json.Nodes.JsonObject, Integer) + nameWithType: MacroFrame.Set(JsonObject, int) + nameWithType.vb: MacroFrame.Set(JsonObject, Integer) +- uid: Hi.NcParsers.Keywords.MacroFrame.Set* + name: Set + href: api/Hi.NcParsers.Keywords.MacroFrame.html#Hi_NcParsers_Keywords_MacroFrame_Set_ + commentId: Overload:Hi.NcParsers.Keywords.MacroFrame.Set + isSpec: "True" + fullName: Hi.NcParsers.Keywords.MacroFrame.Set + nameWithType: MacroFrame.Set - uid: Hi.NcParsers.Keywords.MotionEvent name: MotionEvent href: api/Hi.NcParsers.Keywords.MotionEvent.html @@ -128923,19 +130480,19 @@ references: commentId: T:Hi.NcParsers.Keywords.SubProgramCall fullName: Hi.NcParsers.Keywords.SubProgramCall nameWithType: SubProgramCall -- uid: Hi.NcParsers.Keywords.SubProgramCall.File - name: File - href: api/Hi.NcParsers.Keywords.SubProgramCall.html#Hi_NcParsers_Keywords_SubProgramCall_File - commentId: P:Hi.NcParsers.Keywords.SubProgramCall.File - fullName: Hi.NcParsers.Keywords.SubProgramCall.File - nameWithType: SubProgramCall.File -- uid: Hi.NcParsers.Keywords.SubProgramCall.File* - name: File - href: api/Hi.NcParsers.Keywords.SubProgramCall.html#Hi_NcParsers_Keywords_SubProgramCall_File_ - commentId: Overload:Hi.NcParsers.Keywords.SubProgramCall.File +- uid: Hi.NcParsers.Keywords.SubProgramCall.FileName + name: FileName + href: api/Hi.NcParsers.Keywords.SubProgramCall.html#Hi_NcParsers_Keywords_SubProgramCall_FileName + commentId: P:Hi.NcParsers.Keywords.SubProgramCall.FileName + fullName: Hi.NcParsers.Keywords.SubProgramCall.FileName + nameWithType: SubProgramCall.FileName +- uid: Hi.NcParsers.Keywords.SubProgramCall.FileName* + name: FileName + href: api/Hi.NcParsers.Keywords.SubProgramCall.html#Hi_NcParsers_Keywords_SubProgramCall_FileName_ + commentId: Overload:Hi.NcParsers.Keywords.SubProgramCall.FileName isSpec: "True" - fullName: Hi.NcParsers.Keywords.SubProgramCall.File - nameWithType: SubProgramCall.File + fullName: Hi.NcParsers.Keywords.SubProgramCall.FileName + nameWithType: SubProgramCall.FileName - uid: Hi.NcParsers.Keywords.SubProgramCall.L name: L href: api/Hi.NcParsers.Keywords.SubProgramCall.html#Hi_NcParsers_Keywords_SubProgramCall_L @@ -128981,6 +130538,19 @@ references: commentId: T:Hi.NcParsers.Keywords.SubProgramReturn fullName: Hi.NcParsers.Keywords.SubProgramReturn nameWithType: SubProgramReturn +- uid: Hi.NcParsers.Keywords.SubProgramReturn.JumpedToN + name: JumpedToN + href: api/Hi.NcParsers.Keywords.SubProgramReturn.html#Hi_NcParsers_Keywords_SubProgramReturn_JumpedToN + commentId: P:Hi.NcParsers.Keywords.SubProgramReturn.JumpedToN + fullName: Hi.NcParsers.Keywords.SubProgramReturn.JumpedToN + nameWithType: SubProgramReturn.JumpedToN +- uid: Hi.NcParsers.Keywords.SubProgramReturn.JumpedToN* + name: JumpedToN + href: api/Hi.NcParsers.Keywords.SubProgramReturn.html#Hi_NcParsers_Keywords_SubProgramReturn_JumpedToN_ + commentId: Overload:Hi.NcParsers.Keywords.SubProgramReturn.JumpedToN + isSpec: "True" + fullName: Hi.NcParsers.Keywords.SubProgramReturn.JumpedToN + nameWithType: SubProgramReturn.JumpedToN - uid: Hi.NcParsers.Keywords.SubProgramReturn.P name: P href: api/Hi.NcParsers.Keywords.SubProgramReturn.html#Hi_NcParsers_Keywords_SubProgramReturn_P @@ -129277,6 +130847,24 @@ references: isSpec: "True" fullName: Hi.NcParsers.LogicSyntaxs.BackBoringSyntax.XName nameWithType: BackBoringSyntax.XName +- uid: Hi.NcParsers.LogicSyntaxs.BareG28Behavior + name: BareG28Behavior + href: api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html + commentId: T:Hi.NcParsers.LogicSyntaxs.BareG28Behavior + fullName: Hi.NcParsers.LogicSyntaxs.BareG28Behavior + nameWithType: BareG28Behavior +- uid: Hi.NcParsers.LogicSyntaxs.BareG28Behavior.Alarm + name: Alarm + href: api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html#Hi_NcParsers_LogicSyntaxs_BareG28Behavior_Alarm + commentId: F:Hi.NcParsers.LogicSyntaxs.BareG28Behavior.Alarm + fullName: Hi.NcParsers.LogicSyntaxs.BareG28Behavior.Alarm + nameWithType: BareG28Behavior.Alarm +- uid: Hi.NcParsers.LogicSyntaxs.BareG28Behavior.AllAxesHome + name: AllAxesHome + href: api/Hi.NcParsers.LogicSyntaxs.BareG28Behavior.html#Hi_NcParsers_LogicSyntaxs_BareG28Behavior_AllAxesHome + commentId: F:Hi.NcParsers.LogicSyntaxs.BareG28Behavior.AllAxesHome + fullName: Hi.NcParsers.LogicSyntaxs.BareG28Behavior.AllAxesHome + nameWithType: BareG28Behavior.AllAxesHome - uid: Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax name: BoringCycleSyntax href: api/Hi.NcParsers.LogicSyntaxs.BoringCycleSyntax.html @@ -132294,15 +133882,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveBlockProgramXyz nameWithType: ProgramXyzUtil.ResolveBlockProgramXyz -- uid: Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz(System.Text.Json.Nodes.JsonNode,Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name: ResolveProgramXyz(JsonNode, LazyLinkedListNode, Sentence, NcDiagnosticProgress) - href: api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html#Hi_NcParsers_LogicSyntaxs_ProgramXyzUtil_ResolveProgramXyz_System_Text_Json_Nodes_JsonNode_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__Hi_NcParsers_Sentence_Hi_NcParsers_NcDiagnosticProgress_ - commentId: M:Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz(System.Text.Json.Nodes.JsonNode,Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name.vb: ResolveProgramXyz(JsonNode, LazyLinkedListNode(Of SyntaxPiece), Sentence, NcDiagnosticProgress) - fullName: Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz(System.Text.Json.Nodes.JsonNode, Hi.Common.Collections.LazyLinkedListNode, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - fullName.vb: Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz(System.Text.Json.Nodes.JsonNode, Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - nameWithType: ProgramXyzUtil.ResolveProgramXyz(JsonNode, LazyLinkedListNode, Sentence, NcDiagnosticProgress) - nameWithType.vb: ProgramXyzUtil.ResolveProgramXyz(JsonNode, LazyLinkedListNode(Of SyntaxPiece), Sentence, NcDiagnosticProgress) +- uid: Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz(System.Text.Json.Nodes.JsonNode,Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name: ResolveProgramXyz(JsonNode, LazyLinkedListNode, ISentenceCarrier, NcDiagnosticProgress) + href: api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html#Hi_NcParsers_LogicSyntaxs_ProgramXyzUtil_ResolveProgramXyz_System_Text_Json_Nodes_JsonNode_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__Hi_NcParsers_ISentenceCarrier_Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz(System.Text.Json.Nodes.JsonNode,Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name.vb: ResolveProgramXyz(JsonNode, LazyLinkedListNode(Of SyntaxPiece), ISentenceCarrier, NcDiagnosticProgress) + fullName: Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz(System.Text.Json.Nodes.JsonNode, Hi.Common.Collections.LazyLinkedListNode, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz(System.Text.Json.Nodes.JsonNode, Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + nameWithType: ProgramXyzUtil.ResolveProgramXyz(JsonNode, LazyLinkedListNode, ISentenceCarrier, NcDiagnosticProgress) + nameWithType.vb: ProgramXyzUtil.ResolveProgramXyz(JsonNode, LazyLinkedListNode(Of SyntaxPiece), ISentenceCarrier, NcDiagnosticProgress) - uid: Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.ResolveProgramXyz* name: ResolveProgramXyz href: api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html#Hi_NcParsers_LogicSyntaxs_ProgramXyzUtil_ResolveProgramXyz_ @@ -132344,6 +133932,19 @@ references: fullName.vb: Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.New nameWithType: ReferenceReturnSyntax.ReferenceReturnSyntax nameWithType.vb: ReferenceReturnSyntax.New +- uid: Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.BareG28 + name: BareG28 + href: api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html#Hi_NcParsers_LogicSyntaxs_ReferenceReturnSyntax_BareG28 + commentId: P:Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.BareG28 + fullName: Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.BareG28 + nameWithType: ReferenceReturnSyntax.BareG28 +- uid: Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.BareG28* + name: BareG28 + href: api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html#Hi_NcParsers_LogicSyntaxs_ReferenceReturnSyntax_BareG28_ + commentId: Overload:Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.BareG28 + isSpec: "True" + fullName: Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.BareG28 + nameWithType: ReferenceReturnSyntax.BareG28 - uid: Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) href: api/Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html#Hi_NcParsers_LogicSyntaxs_ReferenceReturnSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ @@ -132408,15 +134009,15 @@ references: commentId: T:Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil fullName: Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil nameWithType: RotaryAxisUtil -- uid: Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name: ConsumeAxis(JsonObject, string, Sentence, NcDiagnosticProgress) - href: api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html#Hi_NcParsers_LogicSyntaxs_RotaryAxisUtil_ConsumeAxis_System_Text_Json_Nodes_JsonObject_System_String_Hi_NcParsers_Sentence_Hi_NcParsers_NcDiagnosticProgress_ - commentId: M:Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name.vb: ConsumeAxis(JsonObject, String, Sentence, NcDiagnosticProgress) - fullName: Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis(System.Text.Json.Nodes.JsonObject, string, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - fullName.vb: Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis(System.Text.Json.Nodes.JsonObject, String, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - nameWithType: RotaryAxisUtil.ConsumeAxis(JsonObject, string, Sentence, NcDiagnosticProgress) - nameWithType.vb: RotaryAxisUtil.ConsumeAxis(JsonObject, String, Sentence, NcDiagnosticProgress) +- uid: Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name: ConsumeAxis(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) + href: api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html#Hi_NcParsers_LogicSyntaxs_RotaryAxisUtil_ConsumeAxis_System_Text_Json_Nodes_JsonObject_System_String_Hi_NcParsers_ISentenceCarrier_Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name.vb: ConsumeAxis(JsonObject, String, ISentenceCarrier, NcDiagnosticProgress) + fullName: Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis(System.Text.Json.Nodes.JsonObject, string, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis(System.Text.Json.Nodes.JsonObject, String, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + nameWithType: RotaryAxisUtil.ConsumeAxis(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) + nameWithType.vb: RotaryAxisUtil.ConsumeAxis(JsonObject, String, ISentenceCarrier, NcDiagnosticProgress) - uid: Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.ConsumeAxis* name: ConsumeAxis href: api/Hi.NcParsers.LogicSyntaxs.RotaryAxisUtil.html#Hi_NcParsers_LogicSyntaxs_RotaryAxisUtil_ConsumeAxis_ @@ -133137,15 +134738,15 @@ references: commentId: T:Hi.NcParsers.NcDiagnostic fullName: Hi.NcParsers.NcDiagnostic nameWithType: NcDiagnostic -- uid: Hi.NcParsers.NcDiagnostic.#ctor(Hi.NcParsers.NcDiagnosticSeverity,Hi.NcParsers.NcDiagnosticCategory,System.String,System.String,System.Object,Hi.NcParsers.Sentence) - name: NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, Sentence) - href: api/Hi.NcParsers.NcDiagnostic.html#Hi_NcParsers_NcDiagnostic__ctor_Hi_NcParsers_NcDiagnosticSeverity_Hi_NcParsers_NcDiagnosticCategory_System_String_System_String_System_Object_Hi_NcParsers_Sentence_ - commentId: M:Hi.NcParsers.NcDiagnostic.#ctor(Hi.NcParsers.NcDiagnosticSeverity,Hi.NcParsers.NcDiagnosticCategory,System.String,System.String,System.Object,Hi.NcParsers.Sentence) - name.vb: New(NcDiagnosticSeverity, NcDiagnosticCategory, String, String, Object, Sentence) - fullName: Hi.NcParsers.NcDiagnostic.NcDiagnostic(Hi.NcParsers.NcDiagnosticSeverity, Hi.NcParsers.NcDiagnosticCategory, string, string, object, Hi.NcParsers.Sentence) - fullName.vb: Hi.NcParsers.NcDiagnostic.New(Hi.NcParsers.NcDiagnosticSeverity, Hi.NcParsers.NcDiagnosticCategory, String, String, Object, Hi.NcParsers.Sentence) - nameWithType: NcDiagnostic.NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, Sentence) - nameWithType.vb: NcDiagnostic.New(NcDiagnosticSeverity, NcDiagnosticCategory, String, String, Object, Sentence) +- uid: Hi.NcParsers.NcDiagnostic.#ctor(Hi.NcParsers.NcDiagnosticSeverity,Hi.NcParsers.NcDiagnosticCategory,System.String,System.String,System.Object,Hi.NcParsers.ISentenceCarrier) + name: NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, ISentenceCarrier) + href: api/Hi.NcParsers.NcDiagnostic.html#Hi_NcParsers_NcDiagnostic__ctor_Hi_NcParsers_NcDiagnosticSeverity_Hi_NcParsers_NcDiagnosticCategory_System_String_System_String_System_Object_Hi_NcParsers_ISentenceCarrier_ + commentId: M:Hi.NcParsers.NcDiagnostic.#ctor(Hi.NcParsers.NcDiagnosticSeverity,Hi.NcParsers.NcDiagnosticCategory,System.String,System.String,System.Object,Hi.NcParsers.ISentenceCarrier) + name.vb: New(NcDiagnosticSeverity, NcDiagnosticCategory, String, String, Object, ISentenceCarrier) + fullName: Hi.NcParsers.NcDiagnostic.NcDiagnostic(Hi.NcParsers.NcDiagnosticSeverity, Hi.NcParsers.NcDiagnosticCategory, string, string, object, Hi.NcParsers.ISentenceCarrier) + fullName.vb: Hi.NcParsers.NcDiagnostic.New(Hi.NcParsers.NcDiagnosticSeverity, Hi.NcParsers.NcDiagnosticCategory, String, String, Object, Hi.NcParsers.ISentenceCarrier) + nameWithType: NcDiagnostic.NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, ISentenceCarrier) + nameWithType.vb: NcDiagnostic.New(NcDiagnosticSeverity, NcDiagnosticCategory, String, String, Object, ISentenceCarrier) - uid: Hi.NcParsers.NcDiagnostic.#ctor* name: NcDiagnostic href: api/Hi.NcParsers.NcDiagnostic.html#Hi_NcParsers_NcDiagnostic__ctor_ @@ -133195,19 +134796,19 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnostic.Id nameWithType: NcDiagnostic.Id -- uid: Hi.NcParsers.NcDiagnostic.Sentence - name: Sentence - href: api/Hi.NcParsers.NcDiagnostic.html#Hi_NcParsers_NcDiagnostic_Sentence - commentId: P:Hi.NcParsers.NcDiagnostic.Sentence - fullName: Hi.NcParsers.NcDiagnostic.Sentence - nameWithType: NcDiagnostic.Sentence -- uid: Hi.NcParsers.NcDiagnostic.Sentence* - name: Sentence - href: api/Hi.NcParsers.NcDiagnostic.html#Hi_NcParsers_NcDiagnostic_Sentence_ - commentId: Overload:Hi.NcParsers.NcDiagnostic.Sentence +- uid: Hi.NcParsers.NcDiagnostic.SentenceCarrier + name: SentenceCarrier + href: api/Hi.NcParsers.NcDiagnostic.html#Hi_NcParsers_NcDiagnostic_SentenceCarrier + commentId: P:Hi.NcParsers.NcDiagnostic.SentenceCarrier + fullName: Hi.NcParsers.NcDiagnostic.SentenceCarrier + nameWithType: NcDiagnostic.SentenceCarrier +- uid: Hi.NcParsers.NcDiagnostic.SentenceCarrier* + name: SentenceCarrier + href: api/Hi.NcParsers.NcDiagnostic.html#Hi_NcParsers_NcDiagnostic_SentenceCarrier_ + commentId: Overload:Hi.NcParsers.NcDiagnostic.SentenceCarrier isSpec: "True" - fullName: Hi.NcParsers.NcDiagnostic.Sentence - nameWithType: NcDiagnostic.Sentence + fullName: Hi.NcParsers.NcDiagnostic.SentenceCarrier + nameWithType: NcDiagnostic.SentenceCarrier - uid: Hi.NcParsers.NcDiagnostic.Severity name: Severity href: api/Hi.NcParsers.NcDiagnostic.html#Hi_NcParsers_NcDiagnostic_Severity @@ -133302,15 +134903,15 @@ references: fullName.vb: Hi.NcParsers.NcDiagnosticProgress.New nameWithType: NcDiagnosticProgress.NcDiagnosticProgress nameWithType.vb: NcDiagnosticProgress.New -- uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name: ConfigurationError(Sentence, string, string, object) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationError_Hi_NcParsers_Sentence_System_String_System_String_System_Object_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name.vb: ConfigurationError(Sentence, String, String, Object) - fullName: Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(Hi.NcParsers.Sentence, string, string, object) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(Hi.NcParsers.Sentence, String, String, Object) - nameWithType: NcDiagnosticProgress.ConfigurationError(Sentence, string, string, object) - nameWithType.vb: NcDiagnosticProgress.ConfigurationError(Sentence, String, String, Object) +- uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name: ConfigurationError(ISentenceCarrier, string, string, object) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationError_Hi_NcParsers_ISentenceCarrier_System_String_System_String_System_Object_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name.vb: ConfigurationError(ISentenceCarrier, String, String, Object) + fullName: Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(Hi.NcParsers.ISentenceCarrier, string, string, object) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(Hi.NcParsers.ISentenceCarrier, String, String, Object) + nameWithType: NcDiagnosticProgress.ConfigurationError(ISentenceCarrier, string, string, object) + nameWithType.vb: NcDiagnosticProgress.ConfigurationError(ISentenceCarrier, String, String, Object) - uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationError(System.String,System.String,System.Object) name: ConfigurationError(string, string, object) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationError_System_String_System_String_System_Object_ @@ -133327,15 +134928,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.ConfigurationError nameWithType: NcDiagnosticProgress.ConfigurationError -- uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(Hi.NcParsers.Sentence,System.String,System.String) - name: ConfigurationMessage(Sentence, string, string) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationMessage_Hi_NcParsers_Sentence_System_String_System_String_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(Hi.NcParsers.Sentence,System.String,System.String) - name.vb: ConfigurationMessage(Sentence, String, String) - fullName: Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(Hi.NcParsers.Sentence, string, string) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(Hi.NcParsers.Sentence, String, String) - nameWithType: NcDiagnosticProgress.ConfigurationMessage(Sentence, string, string) - nameWithType.vb: NcDiagnosticProgress.ConfigurationMessage(Sentence, String, String) +- uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(Hi.NcParsers.ISentenceCarrier,System.String,System.String) + name: ConfigurationMessage(ISentenceCarrier, string, string) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationMessage_Hi_NcParsers_ISentenceCarrier_System_String_System_String_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(Hi.NcParsers.ISentenceCarrier,System.String,System.String) + name.vb: ConfigurationMessage(ISentenceCarrier, String, String) + fullName: Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(Hi.NcParsers.ISentenceCarrier, string, string) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(Hi.NcParsers.ISentenceCarrier, String, String) + nameWithType: NcDiagnosticProgress.ConfigurationMessage(ISentenceCarrier, string, string) + nameWithType.vb: NcDiagnosticProgress.ConfigurationMessage(ISentenceCarrier, String, String) - uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage(System.String,System.String) name: ConfigurationMessage(string, string) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationMessage_System_String_System_String_ @@ -133352,15 +134953,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.ConfigurationMessage nameWithType: NcDiagnosticProgress.ConfigurationMessage -- uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name: ConfigurationWarning(Sentence, string, string, object) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationWarning_Hi_NcParsers_Sentence_System_String_System_String_System_Object_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name.vb: ConfigurationWarning(Sentence, String, String, Object) - fullName: Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(Hi.NcParsers.Sentence, string, string, object) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(Hi.NcParsers.Sentence, String, String, Object) - nameWithType: NcDiagnosticProgress.ConfigurationWarning(Sentence, string, string, object) - nameWithType.vb: NcDiagnosticProgress.ConfigurationWarning(Sentence, String, String, Object) +- uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name: ConfigurationWarning(ISentenceCarrier, string, string, object) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationWarning_Hi_NcParsers_ISentenceCarrier_System_String_System_String_System_Object_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name.vb: ConfigurationWarning(ISentenceCarrier, String, String, Object) + fullName: Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(Hi.NcParsers.ISentenceCarrier, string, string, object) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(Hi.NcParsers.ISentenceCarrier, String, String, Object) + nameWithType: NcDiagnosticProgress.ConfigurationWarning(ISentenceCarrier, string, string, object) + nameWithType.vb: NcDiagnosticProgress.ConfigurationWarning(ISentenceCarrier, String, String, Object) - uid: Hi.NcParsers.NcDiagnosticProgress.ConfigurationWarning(System.String,System.String,System.Object) name: ConfigurationWarning(string, string, object) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ConfigurationWarning_System_String_System_String_System_Object_ @@ -133390,15 +134991,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.Report nameWithType: NcDiagnosticProgress.Report -- uid: Hi.NcParsers.NcDiagnosticProgress.SystemError(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name: SystemError(Sentence, string, string, object) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_SystemError_Hi_NcParsers_Sentence_System_String_System_String_System_Object_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.SystemError(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name.vb: SystemError(Sentence, String, String, Object) - fullName: Hi.NcParsers.NcDiagnosticProgress.SystemError(Hi.NcParsers.Sentence, string, string, object) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.SystemError(Hi.NcParsers.Sentence, String, String, Object) - nameWithType: NcDiagnosticProgress.SystemError(Sentence, string, string, object) - nameWithType.vb: NcDiagnosticProgress.SystemError(Sentence, String, String, Object) +- uid: Hi.NcParsers.NcDiagnosticProgress.SystemError(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name: SystemError(ISentenceCarrier, string, string, object) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_SystemError_Hi_NcParsers_ISentenceCarrier_System_String_System_String_System_Object_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.SystemError(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name.vb: SystemError(ISentenceCarrier, String, String, Object) + fullName: Hi.NcParsers.NcDiagnosticProgress.SystemError(Hi.NcParsers.ISentenceCarrier, string, string, object) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.SystemError(Hi.NcParsers.ISentenceCarrier, String, String, Object) + nameWithType: NcDiagnosticProgress.SystemError(ISentenceCarrier, string, string, object) + nameWithType.vb: NcDiagnosticProgress.SystemError(ISentenceCarrier, String, String, Object) - uid: Hi.NcParsers.NcDiagnosticProgress.SystemError(System.String,System.String,System.Object) name: SystemError(string, string, object) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_SystemError_System_String_System_String_System_Object_ @@ -133415,15 +135016,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.SystemError nameWithType: NcDiagnosticProgress.SystemError -- uid: Hi.NcParsers.NcDiagnosticProgress.SystemMessage(Hi.NcParsers.Sentence,System.String,System.String) - name: SystemMessage(Sentence, string, string) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_SystemMessage_Hi_NcParsers_Sentence_System_String_System_String_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.SystemMessage(Hi.NcParsers.Sentence,System.String,System.String) - name.vb: SystemMessage(Sentence, String, String) - fullName: Hi.NcParsers.NcDiagnosticProgress.SystemMessage(Hi.NcParsers.Sentence, string, string) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.SystemMessage(Hi.NcParsers.Sentence, String, String) - nameWithType: NcDiagnosticProgress.SystemMessage(Sentence, string, string) - nameWithType.vb: NcDiagnosticProgress.SystemMessage(Sentence, String, String) +- uid: Hi.NcParsers.NcDiagnosticProgress.SystemMessage(Hi.NcParsers.ISentenceCarrier,System.String,System.String) + name: SystemMessage(ISentenceCarrier, string, string) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_SystemMessage_Hi_NcParsers_ISentenceCarrier_System_String_System_String_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.SystemMessage(Hi.NcParsers.ISentenceCarrier,System.String,System.String) + name.vb: SystemMessage(ISentenceCarrier, String, String) + fullName: Hi.NcParsers.NcDiagnosticProgress.SystemMessage(Hi.NcParsers.ISentenceCarrier, string, string) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.SystemMessage(Hi.NcParsers.ISentenceCarrier, String, String) + nameWithType: NcDiagnosticProgress.SystemMessage(ISentenceCarrier, string, string) + nameWithType.vb: NcDiagnosticProgress.SystemMessage(ISentenceCarrier, String, String) - uid: Hi.NcParsers.NcDiagnosticProgress.SystemMessage(System.String,System.String) name: SystemMessage(string, string) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_SystemMessage_System_String_System_String_ @@ -133440,15 +135041,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.SystemMessage nameWithType: NcDiagnosticProgress.SystemMessage -- uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name: UnsupportedError(Sentence, string, string, object) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedError_Hi_NcParsers_Sentence_System_String_System_String_System_Object_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name.vb: UnsupportedError(Sentence, String, String, Object) - fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(Hi.NcParsers.Sentence, string, string, object) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(Hi.NcParsers.Sentence, String, String, Object) - nameWithType: NcDiagnosticProgress.UnsupportedError(Sentence, string, string, object) - nameWithType.vb: NcDiagnosticProgress.UnsupportedError(Sentence, String, String, Object) +- uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name: UnsupportedError(ISentenceCarrier, string, string, object) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedError_Hi_NcParsers_ISentenceCarrier_System_String_System_String_System_Object_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name.vb: UnsupportedError(ISentenceCarrier, String, String, Object) + fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(Hi.NcParsers.ISentenceCarrier, string, string, object) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(Hi.NcParsers.ISentenceCarrier, String, String, Object) + nameWithType: NcDiagnosticProgress.UnsupportedError(ISentenceCarrier, string, string, object) + nameWithType.vb: NcDiagnosticProgress.UnsupportedError(ISentenceCarrier, String, String, Object) - uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedError(System.String,System.String,System.Object) name: UnsupportedError(string, string, object) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedError_System_String_System_String_System_Object_ @@ -133465,15 +135066,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedError nameWithType: NcDiagnosticProgress.UnsupportedError -- uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name: UnsupportedMessage(Sentence, string, string, object) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedMessage_Hi_NcParsers_Sentence_System_String_System_String_System_Object_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name.vb: UnsupportedMessage(Sentence, String, String, Object) - fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(Hi.NcParsers.Sentence, string, string, object) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(Hi.NcParsers.Sentence, String, String, Object) - nameWithType: NcDiagnosticProgress.UnsupportedMessage(Sentence, string, string, object) - nameWithType.vb: NcDiagnosticProgress.UnsupportedMessage(Sentence, String, String, Object) +- uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name: UnsupportedMessage(ISentenceCarrier, string, string, object) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedMessage_Hi_NcParsers_ISentenceCarrier_System_String_System_String_System_Object_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name.vb: UnsupportedMessage(ISentenceCarrier, String, String, Object) + fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(Hi.NcParsers.ISentenceCarrier, string, string, object) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(Hi.NcParsers.ISentenceCarrier, String, String, Object) + nameWithType: NcDiagnosticProgress.UnsupportedMessage(ISentenceCarrier, string, string, object) + nameWithType.vb: NcDiagnosticProgress.UnsupportedMessage(ISentenceCarrier, String, String, Object) - uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage(System.String,System.String,System.Object) name: UnsupportedMessage(string, string, object) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedMessage_System_String_System_String_System_Object_ @@ -133490,15 +135091,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedMessage nameWithType: NcDiagnosticProgress.UnsupportedMessage -- uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name: UnsupportedWarning(Sentence, string, string, object) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedWarning_Hi_NcParsers_Sentence_System_String_System_String_System_Object_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name.vb: UnsupportedWarning(Sentence, String, String, Object) - fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(Hi.NcParsers.Sentence, string, string, object) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(Hi.NcParsers.Sentence, String, String, Object) - nameWithType: NcDiagnosticProgress.UnsupportedWarning(Sentence, string, string, object) - nameWithType.vb: NcDiagnosticProgress.UnsupportedWarning(Sentence, String, String, Object) +- uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name: UnsupportedWarning(ISentenceCarrier, string, string, object) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedWarning_Hi_NcParsers_ISentenceCarrier_System_String_System_String_System_Object_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name.vb: UnsupportedWarning(ISentenceCarrier, String, String, Object) + fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(Hi.NcParsers.ISentenceCarrier, string, string, object) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(Hi.NcParsers.ISentenceCarrier, String, String, Object) + nameWithType: NcDiagnosticProgress.UnsupportedWarning(ISentenceCarrier, string, string, object) + nameWithType.vb: NcDiagnosticProgress.UnsupportedWarning(ISentenceCarrier, String, String, Object) - uid: Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning(System.String,System.String,System.Object) name: UnsupportedWarning(string, string, object) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_UnsupportedWarning_System_String_System_String_System_Object_ @@ -133515,15 +135116,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.UnsupportedWarning nameWithType: NcDiagnosticProgress.UnsupportedWarning -- uid: Hi.NcParsers.NcDiagnosticProgress.ValidationError(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name: ValidationError(Sentence, string, string, object) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ValidationError_Hi_NcParsers_Sentence_System_String_System_String_System_Object_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.ValidationError(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name.vb: ValidationError(Sentence, String, String, Object) - fullName: Hi.NcParsers.NcDiagnosticProgress.ValidationError(Hi.NcParsers.Sentence, string, string, object) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ValidationError(Hi.NcParsers.Sentence, String, String, Object) - nameWithType: NcDiagnosticProgress.ValidationError(Sentence, string, string, object) - nameWithType.vb: NcDiagnosticProgress.ValidationError(Sentence, String, String, Object) +- uid: Hi.NcParsers.NcDiagnosticProgress.ValidationError(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name: ValidationError(ISentenceCarrier, string, string, object) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ValidationError_Hi_NcParsers_ISentenceCarrier_System_String_System_String_System_Object_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.ValidationError(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name.vb: ValidationError(ISentenceCarrier, String, String, Object) + fullName: Hi.NcParsers.NcDiagnosticProgress.ValidationError(Hi.NcParsers.ISentenceCarrier, string, string, object) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ValidationError(Hi.NcParsers.ISentenceCarrier, String, String, Object) + nameWithType: NcDiagnosticProgress.ValidationError(ISentenceCarrier, string, string, object) + nameWithType.vb: NcDiagnosticProgress.ValidationError(ISentenceCarrier, String, String, Object) - uid: Hi.NcParsers.NcDiagnosticProgress.ValidationError(System.String,System.String,System.Object) name: ValidationError(string, string, object) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ValidationError_System_String_System_String_System_Object_ @@ -133540,15 +135141,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.NcDiagnosticProgress.ValidationError nameWithType: NcDiagnosticProgress.ValidationError -- uid: Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name: ValidationWarning(Sentence, string, string, object) - href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ValidationWarning_Hi_NcParsers_Sentence_System_String_System_String_System_Object_ - commentId: M:Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(Hi.NcParsers.Sentence,System.String,System.String,System.Object) - name.vb: ValidationWarning(Sentence, String, String, Object) - fullName: Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(Hi.NcParsers.Sentence, string, string, object) - fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(Hi.NcParsers.Sentence, String, String, Object) - nameWithType: NcDiagnosticProgress.ValidationWarning(Sentence, string, string, object) - nameWithType.vb: NcDiagnosticProgress.ValidationWarning(Sentence, String, String, Object) +- uid: Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name: ValidationWarning(ISentenceCarrier, string, string, object) + href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ValidationWarning_Hi_NcParsers_ISentenceCarrier_System_String_System_String_System_Object_ + commentId: M:Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(Hi.NcParsers.ISentenceCarrier,System.String,System.String,System.Object) + name.vb: ValidationWarning(ISentenceCarrier, String, String, Object) + fullName: Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(Hi.NcParsers.ISentenceCarrier, string, string, object) + fullName.vb: Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(Hi.NcParsers.ISentenceCarrier, String, String, Object) + nameWithType: NcDiagnosticProgress.ValidationWarning(ISentenceCarrier, string, string, object) + nameWithType.vb: NcDiagnosticProgress.ValidationWarning(ISentenceCarrier, String, String, Object) - uid: Hi.NcParsers.NcDiagnosticProgress.ValidationWarning(System.String,System.String,System.Object) name: ValidationWarning(string, string, object) href: api/Hi.NcParsers.NcDiagnosticProgress.html#Hi_NcParsers_NcDiagnosticProgress_ValidationWarning_System_String_System_String_System_Object_ @@ -134026,97 +135627,287 @@ references: isSpec: "True" fullName: Hi.NcParsers.ParsingSyntaxs.CsScriptSyntax.XName nameWithType: CsScriptSyntax.XName -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax - name: FanucProgramNumberSyntax - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html - commentId: T:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax - nameWithType: FanucProgramNumberSyntax -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.#ctor - name: FanucProgramNumberSyntax() - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax__ctor - commentId: M:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.#ctor +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc + name: Hi.NcParsers.ParsingSyntaxs.Fanuc + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html + commentId: N:Hi.NcParsers.ParsingSyntaxs.Fanuc + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc + nameWithType: Hi.NcParsers.ParsingSyntaxs.Fanuc +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax + name: FanucGotoParsingSyntax + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html + commentId: T:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax + nameWithType: FanucGotoParsingSyntax +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.#ctor + name: FanucGotoParsingSyntax() + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax__ctor + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.#ctor name.vb: New() - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.FanucProgramNumberSyntax() - fullName.vb: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.New() - nameWithType: FanucProgramNumberSyntax.FanucProgramNumberSyntax() - nameWithType.vb: FanucProgramNumberSyntax.New() -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.#ctor(System.Xml.Linq.XElement) - name: FanucProgramNumberSyntax(XElement) - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax__ctor_System_Xml_Linq_XElement_ - commentId: M:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.#ctor(System.Xml.Linq.XElement) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.FanucGotoParsingSyntax() + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.New() + nameWithType: FanucGotoParsingSyntax.FanucGotoParsingSyntax() + nameWithType.vb: FanucGotoParsingSyntax.New() +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.#ctor(System.Xml.Linq.XElement) + name: FanucGotoParsingSyntax(XElement) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.#ctor(System.Xml.Linq.XElement) name.vb: New(XElement) - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.FanucProgramNumberSyntax(System.Xml.Linq.XElement) - fullName.vb: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.New(System.Xml.Linq.XElement) - nameWithType: FanucProgramNumberSyntax.FanucProgramNumberSyntax(XElement) - nameWithType.vb: FanucProgramNumberSyntax.New(XElement) -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.#ctor* - name: FanucProgramNumberSyntax - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax__ctor_ - commentId: Overload:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.#ctor + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.FanucGotoParsingSyntax(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.New(System.Xml.Linq.XElement) + nameWithType: FanucGotoParsingSyntax.FanucGotoParsingSyntax(XElement) + nameWithType.vb: FanucGotoParsingSyntax.New(XElement) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.#ctor* + name: FanucGotoParsingSyntax + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax__ctor_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.#ctor isSpec: "True" name.vb: New - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.FanucProgramNumberSyntax - fullName.vb: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.New + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.FanucGotoParsingSyntax + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.New + nameWithType: FanucGotoParsingSyntax.FanucGotoParsingSyntax + nameWithType.vb: FanucGotoParsingSyntax.New +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + nameWithType: FanucGotoParsingSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) + nameWithType.vb: FanucGotoParsingSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Build* + name: Build + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax_Build_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Build + isSpec: "True" + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Build + nameWithType: FanucGotoParsingSyntax.Build +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.MakeXmlSource(String, String, Boolean) + nameWithType: FanucGotoParsingSyntax.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucGotoParsingSyntax.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.MakeXmlSource + nameWithType: FanucGotoParsingSyntax.MakeXmlSource +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Name + name: Name + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax_Name + commentId: P:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Name + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Name + nameWithType: FanucGotoParsingSyntax.Name +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Name* + name: Name + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax_Name_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Name + isSpec: "True" + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.Name + nameWithType: FanucGotoParsingSyntax.Name +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.XName + name: XName + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax_XName + commentId: P:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.XName + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.XName + nameWithType: FanucGotoParsingSyntax.XName +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.XName* + name: XName + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucGotoParsingSyntax_XName_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.XName + isSpec: "True" + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucGotoParsingSyntax.XName + nameWithType: FanucGotoParsingSyntax.XName +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax + name: FanucIfThenParsingSyntax + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html + commentId: T:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax + nameWithType: FanucIfThenParsingSyntax +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.#ctor + name: FanucIfThenParsingSyntax() + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax__ctor + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.#ctor + name.vb: New() + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.FanucIfThenParsingSyntax() + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.New() + nameWithType: FanucIfThenParsingSyntax.FanucIfThenParsingSyntax() + nameWithType.vb: FanucIfThenParsingSyntax.New() +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.#ctor(System.Xml.Linq.XElement) + name: FanucIfThenParsingSyntax(XElement) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.FanucIfThenParsingSyntax(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.New(System.Xml.Linq.XElement) + nameWithType: FanucIfThenParsingSyntax.FanucIfThenParsingSyntax(XElement) + nameWithType.vb: FanucIfThenParsingSyntax.New(XElement) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.#ctor* + name: FanucIfThenParsingSyntax + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax__ctor_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.FanucIfThenParsingSyntax + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.New + nameWithType: FanucIfThenParsingSyntax.FanucIfThenParsingSyntax + nameWithType.vb: FanucIfThenParsingSyntax.New +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + nameWithType: FanucIfThenParsingSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) + nameWithType.vb: FanucIfThenParsingSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Build* + name: Build + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax_Build_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Build + isSpec: "True" + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Build + nameWithType: FanucIfThenParsingSyntax.Build +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name: MakeXmlSource(string, string, bool) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + name.vb: MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.MakeXmlSource(String, String, Boolean) + nameWithType: FanucIfThenParsingSyntax.MakeXmlSource(string, string, bool) + nameWithType.vb: FanucIfThenParsingSyntax.MakeXmlSource(String, String, Boolean) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.MakeXmlSource* + name: MakeXmlSource + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.MakeXmlSource + isSpec: "True" + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.MakeXmlSource + nameWithType: FanucIfThenParsingSyntax.MakeXmlSource +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Name + name: Name + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax_Name + commentId: P:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Name + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Name + nameWithType: FanucIfThenParsingSyntax.Name +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Name* + name: Name + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax_Name_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Name + isSpec: "True" + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.Name + nameWithType: FanucIfThenParsingSyntax.Name +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.XName + name: XName + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax_XName + commentId: P:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.XName + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.XName + nameWithType: FanucIfThenParsingSyntax.XName +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.XName* + name: XName + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucIfThenParsingSyntax_XName_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.XName + isSpec: "True" + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.XName + nameWithType: FanucIfThenParsingSyntax.XName +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax + name: FanucProgramNumberSyntax + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html + commentId: T:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax + nameWithType: FanucProgramNumberSyntax +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.#ctor + name: FanucProgramNumberSyntax() + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax__ctor + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.#ctor + name.vb: New() + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.FanucProgramNumberSyntax() + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.New() + nameWithType: FanucProgramNumberSyntax.FanucProgramNumberSyntax() + nameWithType.vb: FanucProgramNumberSyntax.New() +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.#ctor(System.Xml.Linq.XElement) + name: FanucProgramNumberSyntax(XElement) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax__ctor_System_Xml_Linq_XElement_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.#ctor(System.Xml.Linq.XElement) + name.vb: New(XElement) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.FanucProgramNumberSyntax(System.Xml.Linq.XElement) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.New(System.Xml.Linq.XElement) + nameWithType: FanucProgramNumberSyntax.FanucProgramNumberSyntax(XElement) + nameWithType.vb: FanucProgramNumberSyntax.New(XElement) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.#ctor* + name: FanucProgramNumberSyntax + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax__ctor_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.#ctor + isSpec: "True" + name.vb: New + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.FanucProgramNumberSyntax + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.New nameWithType: FanucProgramNumberSyntax.FanucProgramNumberSyntax nameWithType.vb: FanucProgramNumberSyntax.New -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) name: Build(LazyLinkedListNode, List, NcDiagnosticProgress) - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ - commentId: M:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress) name.vb: Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) - fullName.vb: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Build(Hi.Common.Collections.LazyLinkedListNode, System.Collections.Generic.List, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Build(Hi.Common.Collections.LazyLinkedListNode(Of Hi.NcParsers.Syntaxs.SyntaxPiece), System.Collections.Generic.List(Of Hi.NcParsers.Dependencys.INcDependency), Hi.NcParsers.NcDiagnosticProgress) nameWithType: FanucProgramNumberSyntax.Build(LazyLinkedListNode, List, NcDiagnosticProgress) nameWithType.vb: FanucProgramNumberSyntax.Build(LazyLinkedListNode(Of SyntaxPiece), List(Of INcDependency), NcDiagnosticProgress) -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Build* +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Build* name: Build - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax_Build_ - commentId: Overload:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Build + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax_Build_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Build isSpec: "True" - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Build + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Build nameWithType: FanucProgramNumberSyntax.Build -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.MakeXmlSource(System.String,System.String,System.Boolean) +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.MakeXmlSource(System.String,System.String,System.Boolean) name: MakeXmlSource(string, string, bool) - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ - commentId: M:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.MakeXmlSource(System.String,System.String,System.Boolean) + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax_MakeXmlSource_System_String_System_String_System_Boolean_ + commentId: M:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.MakeXmlSource(System.String,System.String,System.Boolean) name.vb: MakeXmlSource(String, String, Boolean) - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.MakeXmlSource(string, string, bool) - fullName.vb: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.MakeXmlSource(String, String, Boolean) + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.MakeXmlSource(string, string, bool) + fullName.vb: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.MakeXmlSource(String, String, Boolean) nameWithType: FanucProgramNumberSyntax.MakeXmlSource(string, string, bool) nameWithType.vb: FanucProgramNumberSyntax.MakeXmlSource(String, String, Boolean) -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.MakeXmlSource* +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.MakeXmlSource* name: MakeXmlSource - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax_MakeXmlSource_ - commentId: Overload:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.MakeXmlSource + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax_MakeXmlSource_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.MakeXmlSource isSpec: "True" - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.MakeXmlSource + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.MakeXmlSource nameWithType: FanucProgramNumberSyntax.MakeXmlSource -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Name +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Name name: Name - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax_Name - commentId: P:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Name - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Name + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax_Name + commentId: P:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Name + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Name nameWithType: FanucProgramNumberSyntax.Name -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Name* +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Name* name: Name - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax_Name_ - commentId: Overload:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Name + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax_Name_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Name isSpec: "True" - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.Name + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.Name nameWithType: FanucProgramNumberSyntax.Name -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.XName +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.XName name: XName - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax_XName - commentId: P:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.XName - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.XName + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax_XName + commentId: P:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.XName + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.XName nameWithType: FanucProgramNumberSyntax.XName -- uid: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.XName* +- uid: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.XName* name: XName - href: api/Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_FanucProgramNumberSyntax_XName_ - commentId: Overload:Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.XName + href: api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.html#Hi_NcParsers_ParsingSyntaxs_Fanuc_FanucProgramNumberSyntax_XName_ + commentId: Overload:Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.XName isSpec: "True" - fullName: Hi.NcParsers.ParsingSyntaxs.FanucProgramNumberSyntax.XName + fullName: Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucProgramNumberSyntax.XName nameWithType: FanucProgramNumberSyntax.XName - uid: Hi.NcParsers.ParsingSyntaxs.FlagSyntax name: FlagSyntax @@ -138363,15 +140154,15 @@ references: isSpec: "True" fullName: Hi.NcParsers.SoftNcUtil.GetOccupiedMotionEventForm nameWithType: SoftNcUtil.GetOccupiedMotionEventForm -- uid: Hi.NcParsers.SoftNcUtil.GetParsedDouble(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name: GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) - href: api/Hi.NcParsers.SoftNcUtil.html#Hi_NcParsers_SoftNcUtil_GetParsedDouble_System_Text_Json_Nodes_JsonObject_System_String_Hi_NcParsers_Sentence_Hi_NcParsers_NcDiagnosticProgress_ - commentId: M:Hi.NcParsers.SoftNcUtil.GetParsedDouble(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name.vb: GetParsedDouble(JsonObject, String, Sentence, NcDiagnosticProgress) - fullName: Hi.NcParsers.SoftNcUtil.GetParsedDouble(System.Text.Json.Nodes.JsonObject, string, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - fullName.vb: Hi.NcParsers.SoftNcUtil.GetParsedDouble(System.Text.Json.Nodes.JsonObject, String, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - nameWithType: SoftNcUtil.GetParsedDouble(JsonObject, string, Sentence, NcDiagnosticProgress) - nameWithType.vb: SoftNcUtil.GetParsedDouble(JsonObject, String, Sentence, NcDiagnosticProgress) +- uid: Hi.NcParsers.SoftNcUtil.GetParsedDouble(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name: GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) + href: api/Hi.NcParsers.SoftNcUtil.html#Hi_NcParsers_SoftNcUtil_GetParsedDouble_System_Text_Json_Nodes_JsonObject_System_String_Hi_NcParsers_ISentenceCarrier_Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.SoftNcUtil.GetParsedDouble(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name.vb: GetParsedDouble(JsonObject, String, ISentenceCarrier, NcDiagnosticProgress) + fullName: Hi.NcParsers.SoftNcUtil.GetParsedDouble(System.Text.Json.Nodes.JsonObject, string, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.SoftNcUtil.GetParsedDouble(System.Text.Json.Nodes.JsonObject, String, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + nameWithType: SoftNcUtil.GetParsedDouble(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) + nameWithType.vb: SoftNcUtil.GetParsedDouble(JsonObject, String, ISentenceCarrier, NcDiagnosticProgress) - uid: Hi.NcParsers.SoftNcUtil.GetParsedDouble* name: GetParsedDouble href: api/Hi.NcParsers.SoftNcUtil.html#Hi_NcParsers_SoftNcUtil_GetParsedDouble_ @@ -138379,24 +140170,24 @@ references: isSpec: "True" fullName: Hi.NcParsers.SoftNcUtil.GetParsedDouble nameWithType: SoftNcUtil.GetParsedDouble -- uid: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject,System.String,Hi.Geom.Vec3d,Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name: GetVec3d(JsonObject, string, Vec3d, Sentence, NcDiagnosticProgress) - href: api/Hi.NcParsers.SoftNcUtil.html#Hi_NcParsers_SoftNcUtil_GetVec3d_System_Text_Json_Nodes_JsonObject_System_String_Hi_Geom_Vec3d_Hi_NcParsers_Sentence_Hi_NcParsers_NcDiagnosticProgress_ - commentId: M:Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject,System.String,Hi.Geom.Vec3d,Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name.vb: GetVec3d(JsonObject, String, Vec3d, Sentence, NcDiagnosticProgress) - fullName: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject, string, Hi.Geom.Vec3d, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - fullName.vb: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject, String, Hi.Geom.Vec3d, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - nameWithType: SoftNcUtil.GetVec3d(JsonObject, string, Vec3d, Sentence, NcDiagnosticProgress) - nameWithType.vb: SoftNcUtil.GetVec3d(JsonObject, String, Vec3d, Sentence, NcDiagnosticProgress) -- uid: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name: GetVec3d(JsonObject, string, Sentence, NcDiagnosticProgress) - href: api/Hi.NcParsers.SoftNcUtil.html#Hi_NcParsers_SoftNcUtil_GetVec3d_System_Text_Json_Nodes_JsonObject_System_String_Hi_NcParsers_Sentence_Hi_NcParsers_NcDiagnosticProgress_ - commentId: M:Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.Sentence,Hi.NcParsers.NcDiagnosticProgress) - name.vb: GetVec3d(JsonObject, String, Sentence, NcDiagnosticProgress) - fullName: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject, string, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - fullName.vb: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject, String, Hi.NcParsers.Sentence, Hi.NcParsers.NcDiagnosticProgress) - nameWithType: SoftNcUtil.GetVec3d(JsonObject, string, Sentence, NcDiagnosticProgress) - nameWithType.vb: SoftNcUtil.GetVec3d(JsonObject, String, Sentence, NcDiagnosticProgress) +- uid: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject,System.String,Hi.Geom.Vec3d,Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name: GetVec3d(JsonObject, string, Vec3d, ISentenceCarrier, NcDiagnosticProgress) + href: api/Hi.NcParsers.SoftNcUtil.html#Hi_NcParsers_SoftNcUtil_GetVec3d_System_Text_Json_Nodes_JsonObject_System_String_Hi_Geom_Vec3d_Hi_NcParsers_ISentenceCarrier_Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject,System.String,Hi.Geom.Vec3d,Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name.vb: GetVec3d(JsonObject, String, Vec3d, ISentenceCarrier, NcDiagnosticProgress) + fullName: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject, string, Hi.Geom.Vec3d, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject, String, Hi.Geom.Vec3d, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + nameWithType: SoftNcUtil.GetVec3d(JsonObject, string, Vec3d, ISentenceCarrier, NcDiagnosticProgress) + nameWithType.vb: SoftNcUtil.GetVec3d(JsonObject, String, Vec3d, ISentenceCarrier, NcDiagnosticProgress) +- uid: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name: GetVec3d(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) + href: api/Hi.NcParsers.SoftNcUtil.html#Hi_NcParsers_SoftNcUtil_GetVec3d_System_Text_Json_Nodes_JsonObject_System_String_Hi_NcParsers_ISentenceCarrier_Hi_NcParsers_NcDiagnosticProgress_ + commentId: M:Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject,System.String,Hi.NcParsers.ISentenceCarrier,Hi.NcParsers.NcDiagnosticProgress) + name.vb: GetVec3d(JsonObject, String, ISentenceCarrier, NcDiagnosticProgress) + fullName: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject, string, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + fullName.vb: Hi.NcParsers.SoftNcUtil.GetVec3d(System.Text.Json.Nodes.JsonObject, String, Hi.NcParsers.ISentenceCarrier, Hi.NcParsers.NcDiagnosticProgress) + nameWithType: SoftNcUtil.GetVec3d(JsonObject, string, ISentenceCarrier, NcDiagnosticProgress) + nameWithType.vb: SoftNcUtil.GetVec3d(JsonObject, String, ISentenceCarrier, NcDiagnosticProgress) - uid: Hi.NcParsers.SoftNcUtil.GetVec3d* name: GetVec3d href: api/Hi.NcParsers.SoftNcUtil.html#Hi_NcParsers_SoftNcUtil_GetVec3d_ @@ -139240,15 +141031,15 @@ references: commentId: T:Hi.NcParsers.Syntaxs.SyntaxPiece fullName: Hi.NcParsers.Syntaxs.SyntaxPiece nameWithType: SyntaxPiece -- uid: Hi.NcParsers.Syntaxs.SyntaxPiece.#ctor(Hi.NcParsers.Sentence,System.Text.Json.Nodes.JsonObject) - name: SyntaxPiece(Sentence, JsonObject) - href: api/Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece__ctor_Hi_NcParsers_Sentence_System_Text_Json_Nodes_JsonObject_ - commentId: M:Hi.NcParsers.Syntaxs.SyntaxPiece.#ctor(Hi.NcParsers.Sentence,System.Text.Json.Nodes.JsonObject) - name.vb: New(Sentence, JsonObject) - fullName: Hi.NcParsers.Syntaxs.SyntaxPiece.SyntaxPiece(Hi.NcParsers.Sentence, System.Text.Json.Nodes.JsonObject) - fullName.vb: Hi.NcParsers.Syntaxs.SyntaxPiece.New(Hi.NcParsers.Sentence, System.Text.Json.Nodes.JsonObject) - nameWithType: SyntaxPiece.SyntaxPiece(Sentence, JsonObject) - nameWithType.vb: SyntaxPiece.New(Sentence, JsonObject) +- uid: Hi.NcParsers.Syntaxs.SyntaxPiece.#ctor(Hi.NcParsers.Sentence,System.Text.Json.Nodes.JsonObject,System.Int32) + name: SyntaxPiece(Sentence, JsonObject, int) + href: api/Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece__ctor_Hi_NcParsers_Sentence_System_Text_Json_Nodes_JsonObject_System_Int32_ + commentId: M:Hi.NcParsers.Syntaxs.SyntaxPiece.#ctor(Hi.NcParsers.Sentence,System.Text.Json.Nodes.JsonObject,System.Int32) + name.vb: New(Sentence, JsonObject, Integer) + fullName: Hi.NcParsers.Syntaxs.SyntaxPiece.SyntaxPiece(Hi.NcParsers.Sentence, System.Text.Json.Nodes.JsonObject, int) + fullName.vb: Hi.NcParsers.Syntaxs.SyntaxPiece.New(Hi.NcParsers.Sentence, System.Text.Json.Nodes.JsonObject, Integer) + nameWithType: SyntaxPiece.SyntaxPiece(Sentence, JsonObject, int) + nameWithType.vb: SyntaxPiece.New(Sentence, JsonObject, Integer) - uid: Hi.NcParsers.Syntaxs.SyntaxPiece.#ctor* name: SyntaxPiece href: api/Hi.NcParsers.Syntaxs.SyntaxPiece.html#Hi_NcParsers_Syntaxs_SyntaxPiece__ctor_ @@ -143158,15 +144949,15 @@ references: commentId: T:Hi.Numerical.HardNcLine fullName: Hi.Numerical.HardNcLine nameWithType: HardNcLine -- uid: Hi.Numerical.HardNcLine.#ctor(Hi.Numerical.HardNcEnv,Hi.Common.FileLines.IndexedFileLine,Hi.Numerical.HardNcLine,Hi.Numerical.NcNoteCache@,System.IProgress{System.Object}) - name: HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, out NcNoteCache, IProgress) - href: api/Hi.Numerical.HardNcLine.html#Hi_Numerical_HardNcLine__ctor_Hi_Numerical_HardNcEnv_Hi_Common_FileLines_IndexedFileLine_Hi_Numerical_HardNcLine_Hi_Numerical_NcNoteCache__System_IProgress_System_Object__ - commentId: M:Hi.Numerical.HardNcLine.#ctor(Hi.Numerical.HardNcEnv,Hi.Common.FileLines.IndexedFileLine,Hi.Numerical.HardNcLine,Hi.Numerical.NcNoteCache@,System.IProgress{System.Object}) - name.vb: New(HardNcEnv, IndexedFileLine, HardNcLine, NcNoteCache, IProgress(Of Object)) - fullName: Hi.Numerical.HardNcLine.HardNcLine(Hi.Numerical.HardNcEnv, Hi.Common.FileLines.IndexedFileLine, Hi.Numerical.HardNcLine, out Hi.Numerical.NcNoteCache, System.IProgress) - fullName.vb: Hi.Numerical.HardNcLine.New(Hi.Numerical.HardNcEnv, Hi.Common.FileLines.IndexedFileLine, Hi.Numerical.HardNcLine, Hi.Numerical.NcNoteCache, System.IProgress(Of Object)) - nameWithType: HardNcLine.HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, out NcNoteCache, IProgress) - nameWithType.vb: HardNcLine.New(HardNcEnv, IndexedFileLine, HardNcLine, NcNoteCache, IProgress(Of Object)) +- uid: Hi.Numerical.HardNcLine.#ctor(Hi.Numerical.HardNcEnv,Hi.Common.FileLines.IndexedFileLine,Hi.Numerical.HardNcLine,System.Int32,Hi.Numerical.NcNoteCache@,System.IProgress{System.Object}) + name: HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, int, out NcNoteCache, IProgress) + href: api/Hi.Numerical.HardNcLine.html#Hi_Numerical_HardNcLine__ctor_Hi_Numerical_HardNcEnv_Hi_Common_FileLines_IndexedFileLine_Hi_Numerical_HardNcLine_System_Int32_Hi_Numerical_NcNoteCache__System_IProgress_System_Object__ + commentId: M:Hi.Numerical.HardNcLine.#ctor(Hi.Numerical.HardNcEnv,Hi.Common.FileLines.IndexedFileLine,Hi.Numerical.HardNcLine,System.Int32,Hi.Numerical.NcNoteCache@,System.IProgress{System.Object}) + name.vb: New(HardNcEnv, IndexedFileLine, HardNcLine, Integer, NcNoteCache, IProgress(Of Object)) + fullName: Hi.Numerical.HardNcLine.HardNcLine(Hi.Numerical.HardNcEnv, Hi.Common.FileLines.IndexedFileLine, Hi.Numerical.HardNcLine, int, out Hi.Numerical.NcNoteCache, System.IProgress) + fullName.vb: Hi.Numerical.HardNcLine.New(Hi.Numerical.HardNcEnv, Hi.Common.FileLines.IndexedFileLine, Hi.Numerical.HardNcLine, Integer, Hi.Numerical.NcNoteCache, System.IProgress(Of Object)) + nameWithType: HardNcLine.HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, int, out NcNoteCache, IProgress) + nameWithType.vb: HardNcLine.New(HardNcEnv, IndexedFileLine, HardNcLine, Integer, NcNoteCache, IProgress(Of Object)) - uid: Hi.Numerical.HardNcLine.#ctor(Hi.Numerical.HardNcEnv,System.IProgress{System.Object}) name: HardNcLine(HardNcEnv, IProgress) href: api/Hi.Numerical.HardNcLine.html#Hi_Numerical_HardNcLine__ctor_Hi_Numerical_HardNcEnv_System_IProgress_System_Object__ @@ -144010,6 +145801,19 @@ references: isSpec: "True" fullName: Hi.Numerical.HardNcLine.S nameWithType: HardNcLine.S +- uid: Hi.Numerical.HardNcLine.SentenceIndex + name: SentenceIndex + href: api/Hi.Numerical.HardNcLine.html#Hi_Numerical_HardNcLine_SentenceIndex + commentId: P:Hi.Numerical.HardNcLine.SentenceIndex + fullName: Hi.Numerical.HardNcLine.SentenceIndex + nameWithType: HardNcLine.SentenceIndex +- uid: Hi.Numerical.HardNcLine.SentenceIndex* + name: SentenceIndex + href: api/Hi.Numerical.HardNcLine.html#Hi_Numerical_HardNcLine_SentenceIndex_ + commentId: Overload:Hi.Numerical.HardNcLine.SentenceIndex + isSpec: "True" + fullName: Hi.Numerical.HardNcLine.SentenceIndex + nameWithType: HardNcLine.SentenceIndex - uid: Hi.Numerical.HardNcLine.SpindleSpeed_radds name: SpindleSpeed_radds href: api/Hi.Numerical.HardNcLine.html#Hi_Numerical_HardNcLine_SpindleSpeed_radds @@ -148693,15 +150497,15 @@ references: commentId: T:Hi.Numerical.SourcedActEntry fullName: Hi.Numerical.SourcedActEntry nameWithType: SourcedActEntry -- uid: Hi.Numerical.SourcedActEntry.#ctor(Hi.NcParsers.IGetSentence,Hi.Numerical.Acts.IAct) - name: SourcedActEntry(IGetSentence, IAct) - href: api/Hi.Numerical.SourcedActEntry.html#Hi_Numerical_SourcedActEntry__ctor_Hi_NcParsers_IGetSentence_Hi_Numerical_Acts_IAct_ - commentId: M:Hi.Numerical.SourcedActEntry.#ctor(Hi.NcParsers.IGetSentence,Hi.Numerical.Acts.IAct) - name.vb: New(IGetSentence, IAct) - fullName: Hi.Numerical.SourcedActEntry.SourcedActEntry(Hi.NcParsers.IGetSentence, Hi.Numerical.Acts.IAct) - fullName.vb: Hi.Numerical.SourcedActEntry.New(Hi.NcParsers.IGetSentence, Hi.Numerical.Acts.IAct) - nameWithType: SourcedActEntry.SourcedActEntry(IGetSentence, IAct) - nameWithType.vb: SourcedActEntry.New(IGetSentence, IAct) +- uid: Hi.Numerical.SourcedActEntry.#ctor(Hi.NcParsers.ISentenceCarrier,Hi.Numerical.Acts.IAct) + name: SourcedActEntry(ISentenceCarrier, IAct) + href: api/Hi.Numerical.SourcedActEntry.html#Hi_Numerical_SourcedActEntry__ctor_Hi_NcParsers_ISentenceCarrier_Hi_Numerical_Acts_IAct_ + commentId: M:Hi.Numerical.SourcedActEntry.#ctor(Hi.NcParsers.ISentenceCarrier,Hi.Numerical.Acts.IAct) + name.vb: New(ISentenceCarrier, IAct) + fullName: Hi.Numerical.SourcedActEntry.SourcedActEntry(Hi.NcParsers.ISentenceCarrier, Hi.Numerical.Acts.IAct) + fullName.vb: Hi.Numerical.SourcedActEntry.New(Hi.NcParsers.ISentenceCarrier, Hi.Numerical.Acts.IAct) + nameWithType: SourcedActEntry.SourcedActEntry(ISentenceCarrier, IAct) + nameWithType.vb: SourcedActEntry.New(ISentenceCarrier, IAct) - uid: Hi.Numerical.SourcedActEntry.#ctor* name: SourcedActEntry href: api/Hi.Numerical.SourcedActEntry.html#Hi_Numerical_SourcedActEntry__ctor_ diff --git a/App/zh-Hans/HiMech.resources.dll b/App/zh-Hans/HiMech.resources.dll index afd20df3..3f052435 100644 Binary files a/App/zh-Hans/HiMech.resources.dll and b/App/zh-Hans/HiMech.resources.dll differ diff --git a/App/zh-Hans/HiNc.resources.dll b/App/zh-Hans/HiNc.resources.dll index e0f64e1c..4eeec304 100644 Binary files a/App/zh-Hans/HiNc.resources.dll and b/App/zh-Hans/HiNc.resources.dll differ diff --git a/App/zh-Hant/HiGeom.resources.dll b/App/zh-Hant/HiGeom.resources.dll index 2935cbfc..cc08da97 100644 Binary files a/App/zh-Hant/HiGeom.resources.dll and b/App/zh-Hant/HiGeom.resources.dll differ diff --git a/App/zh-Hant/HiMech.resources.dll b/App/zh-Hant/HiMech.resources.dll index 618b718d..8a24c9b3 100644 Binary files a/App/zh-Hant/HiMech.resources.dll and b/App/zh-Hant/HiMech.resources.dll differ diff --git a/App/zh-Hant/HiNc.resources.dll b/App/zh-Hant/HiNc.resources.dll index c20c54db..1cce83bc 100644 Binary files a/App/zh-Hant/HiNc.resources.dll and b/App/zh-Hant/HiNc.resources.dll differ